angularjs promises:然后在 deferred.resolve() 超时之前调用
angularjs promises: then called before deferred.resolve() in timeout
我有类似于下面的代码。它应该打印 "in intermediate then",然后打印 "in final then",但它首先打印 "in final then"(即 then 函数在调用 deferred.resolve() 之前被调用)。知道为什么会这样吗?与 $timeout 有关系吗?
var promise = myFunctionThatReturnsAPromise();
promise.then(function() {
console.log('in final then!');
});
var myFunctionThatReturnsAPromise = function() {
var deferred = $q.defer();
$timeout(function() {
console.log('in intermediate then');
deferred.resolve();
}, 0);
return deferred.$promise;
};
我很确定你应该 return deferred.promise
,而不是 $
。
这是一个plunker
我有类似于下面的代码。它应该打印 "in intermediate then",然后打印 "in final then",但它首先打印 "in final then"(即 then 函数在调用 deferred.resolve() 之前被调用)。知道为什么会这样吗?与 $timeout 有关系吗?
var promise = myFunctionThatReturnsAPromise();
promise.then(function() {
console.log('in final then!');
});
var myFunctionThatReturnsAPromise = function() {
var deferred = $q.defer();
$timeout(function() {
console.log('in intermediate then');
deferred.resolve();
}, 0);
return deferred.$promise;
};
我很确定你应该 return deferred.promise
,而不是 $
。
这是一个plunker