我在嘗試瞭解承諾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