Опитвам се да разбера обещанието 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/