Я пытаюсь понять API обещаний и цепочку, особенно время, когда $timeout
используется с .then()
. То, что я ожидал от следующего, состоит в том, что, поскольку $timeout
возвращает обещание, .then()
не будет вызываться до тех пор, пока он не будет разрешен.
Но вместо ABAB это ABBA все время.
Как я могу использовать 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/