我正在爲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