我正在为Umbraco编写一个AngularJS插件并创建了一个简单的视图,控制器和服务。但由于某种原因,我的承诺需要一段时间才能解决。
我已经使用内置的$ q服务来创建并返回我的承诺,我已经注销了我的变量,并可以看到异步服务何时结束,但是与调用的解析函数之间存在明显的时间差。
我已经发现承诺看起来像它正在等待Umbracos GetRemainingTimeout服务解决之前。
有人可以解释为什么会发生这种情况吗?
viewController.js
angular.module('umbraco')
.controller('JaywingAnalyticsHelper.ViewController', function ($scope, googleService) {
googleService.checkAuth().then(function (signedIn){
$scope.isAuthorised = signedIn;
console.log(signedIn);
});
});
googleService.js
angular.module("umbraco")
.service('googleService', function ($q) {
var clientId = 'REMOVED_FOR_PRIVACY',
scopes = ['https://www.googleapis.com/auth/analytics.readonly'],
deferred = $q.defer();
this.checkAuth = function() {
gapi.load('auth2', function() {
gapi.auth2.init().then(function() {
var googleAuth = gapi.auth2.getAuthInstance();
var signedIn = googleAuth.isSignedIn.get();
console.log(signedIn);
deferred.resolve(signedIn);
}, function(){
deferred.reject(false);
});
});
return deferred.promise;
};
});
一把umbraco版本 - 7.5.12
角版本 - 1.1.5
定义*“明显的时差”*。请注意,角度版本非常陈旧 – charlietfl
它会有所不同,但在第一个控制台日志之后,在解析功能执行之前,它可以长达10秒。 – StueyKent