我在尝试了解承诺API和链接,特别是当$timeout
与.then()
一起使用时的时间。我之前所期望的是,由于$timeout
返回一个承诺,.then()
将不会被调用,直到它已经解决。
但不是ABAB,它总是ABBA。
如何在使用promise API确保在执行.then()
之前实际完成长时间呼叫(或使用$timeout
的延迟呼叫)?
代码
angular
.module('app', [])
.controller('ThenCtrl', ThenCtrl);
function ThenCtrl($timeout, $q) {
var vm = this;
vm.items = [];
$q.when(pushA()).then(pushB());
$timeout(pushA, 5000).then(pushB());
function pushA() {
vm.items.push('A');
}
function pushB() {
vm.items.push('B');
}
}
标记
<div ng-app="app">
<div ng-controller="ThenCtrl as vm">
{{vm.items}}
</div>
</div>
我已经成立了一个小提琴:https://jsfiddle.net/kan3c61t/
这也是一个非常有趣的解决方案。 –
非常清楚地表明。这些括号可以产生什么不同。 – twip
这非常帮助我 – Fergus