【发布时间】:2020-02-14 23:15:04
【问题描述】:
我正在尝试了解 Promise API 和链接,尤其是 $timeout 与 .then() 一起使用的时机。我对以下内容的期望是,由于$timeout 返回一个承诺,.then() 在解决之前不会被调用。
但不是 ABAB,而是 ABBA。
如何使用 Promise API 确保长时间运行的调用(或使用 $timeout 的延迟调用)在 .then() 执行之前实际上完成?
代码
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/
【问题讨论】: