【发布时间】:2016-04-28 07:03:40
【问题描述】:
我可以更改此代码以使其返回承诺吗?
var calApi = {
fun3: function() {
gapi.auth.authorize(
{
'client_id': CLIENT_ID,
'scope': SCOPES.join(' '),
'immediate': true
}, calApi.fun2);
},
fun2: function(authResult) {
if (authResult && !authResult.error) {
calApi.fun4();
}
},
fun1: function(event) {
gapi.auth.authorize(
{client_id: CLIENT_ID, scope: SCOPES, immediate: false},
calApi.fun2);
return false;
},
fun4: function() {
gapi.client.load('calendar', 'v3', calApi.fun5);
},
fun5: function() {
// some code
// returning the result...
}
};
return calApi;
我的控制器:
$scope.hanleAPICall = function(event) {
factoryName.fun1(event);
};
这段代码取自谷歌calendar api,我试图在 angularjs 工厂中实现它,但我需要从 api 返回事件结果作为我返回事件的承诺,但我的内部没有任何反应页面。
【问题讨论】:
-
gapi.client.load(...)等退货承诺? -
我认为他们都没有返回承诺,正如您在link中看到的那样
-
如果返回值不是一个承诺,你总是可以使用 Angular $q 模块将它变成一个承诺。
-
@UriBrecher,是的,那是真的,但在这种情况下,fun1 正在调用 fun2,它正在调用其他函数,我不知道该怎么做才能让它工作...... ;(
-
@MaximShoustin,它没有返回承诺
标签: javascript angularjs promise google-calendar-api