我正在努力了解承诺API和链接,特别是当$timeoutis与.then()一起使用的时机.从以下我预期的是,由于$timeout返回一个承诺,.then()将不会被调用,直到它已经解决.
但是ABAB一直是ABBA.
在执行.then()之前,如何使用promise API来确保长时间运行的调用(或使用$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/