gpt4 book ai didi

javascript - google calendar api 调用可以在 Angular 工厂内返回一个 promise 吗?

转载 作者:行者123 更新时间:2023-11-29 14:42:27 25 4
gpt4 key购买 nike

我可以更改此代码以使其返回 promise 吗?

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;

我的 Controller :

$scope.hanleAPICall = function(event) {
factoryName.fun1(event);
};

此代码取自谷歌calendar api我试图在 angularjs 工厂中实现它,但我需要从 api 返回事件的结果作为我返回事件的 promise ,但我的页面内没有任何反应。

最佳答案

您可以执行如下操作以返回服务 promise :

angular.module('app', [])
.factory('AppService', function ($q) {
return {
fun3: fun3
};

function fun3() {
var defer = $q.defer();

gapi.auth.authorize(
{
'client_id': CLIENT_ID,
'scope': SCOPES.join(' '),
'immediate': true
}, handleAuthResult);

function handleAuthResult (authResult) {
if (authResult && !authResult.error) {
defer.resolve(authResult);
} else {
defer.reject(authResult.error);
}
}

return defer.promise;
}
});

与上面类似,您可以为其他方法创建工厂方法 fun1, fun2, fun4, fun5

关于javascript - google calendar api 调用可以在 Angular 工厂内返回一个 promise 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36907532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com