我可以更改此代码以便返回承诺吗?谷歌日历API调用可以在角厂内返回一个承诺吗?
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采取和IM努力实现它在angularjs工厂,但我需要从API的返回事件的结果承诺尽快回复事件,但在我的页面内没有任何事情发生。
'gapi.client.load(...)'和其他收益的承诺? –
我认为他们都没有返回承诺,如您可以在[链接](https://developers.google.com/google-apps/calendar/quickstart/js#step_2_set_up_the_sample)中看到的 – Dimitar
如果返回值不是承诺您始终可以使用角度$ q模块将其变为承诺。 –