【发布时间】:2013-09-10 02:34:44
【问题描述】:
我对以下代码有疑问:
initPromise = $q.all(arrayOfPromises)
.then(function () {
return $scope.methodWhichReturnsPromise()
.then(function (data) {
console.log("report data");
return data;
});
});
if ($scope.showCompare) {
initPromise
.then(function () {
return $q.all(anotherArrayOfPromises);
})
.then(function () {
return aMethodWhichReturnsAPromise().then(function () {
console.log("compare report data");
});
});
}
initPromise
.then(function () {
console.log("generate view data");
})
.finally(function () {
console.log("finally");
});
在加载基于路由参数的控制器时,我正在加载一堆异步数据。如果有 showCompare 标志,我想在两者之间加载一些东西。但console.log 消息的顺序如下:
report data
generate view data
finally
compare report data
我原以为compare report data 会完全按照它在代码中写入的顺序显示。
我做错了什么?
【问题讨论】:
标签: javascript angularjs promise deferred