AngularJS$q承诺成功的回调以错误的顺序执行
AngularJS $q promises success callback gets executed in the wrong order
我对以下代码有问题:
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
会以与代码中编写的顺序完全相同的顺序显示。
我做错了什么?
您将在
initPromise
上添加两个不同的处理程序,而不是链接所有.then()
调用。为此,您需要使用
if ($scope.showCompare) {
initPromise = initPromise.then(…);
}
相关文章:
- Javascript执行顺序错误
- 按 [field] 值对 javascript 数组进行排序会给出错误的顺序
- 带有 CommonsChunkPlugin 的 Webpack 会导致 html 文件中的捆绑顺序错误
- For循环以错误的顺序返回promise
- Javascript错误的警报顺序
- three.js:透明对象根据相机角度按错误顺序渲染
- ES6模块初始化顺序错误
- 在Firefox中的keydown事件中隐藏元素时焦点顺序错误
- 使用 JS 填充 HTML 表,数据顺序错误
- JavaScript 排序顺序错误
- Angular + Requirejs - 以错误的顺序加载
- Mixpanel javascript 集成:连续的事件在 mixpanel 结束时以错误的顺序记录
- 视图中的 JavaScript 错误 - 加载顺序
- ReactJS:Dom 渲染顺序错误
- JQuery 错误的脚本顺序
- AngularJS$q承诺成功的回调以错误的顺序执行
- Angular orderBy:“timestamp”将事物按错误的顺序排列
- kafka节点的消息顺序错误
- 在IE8和IE7(Telerik radgrid)中以错误的顺序触发javascript事件
- angularjs ng repeat中的错误顺序