Tôi đang cố gắng hiểu API lời hứa và chuỗi, đặc biệt là thời điểm khi $timeout
được sử dụng với .then()
. Những gì tôi đã mong đợi từ sau đây là kể từ khi $timeout
trả về một lời hứa, .then()
sẽ không được gọi cho đến khi nó đã được giải quyết.
Nhưng thay vì ABAB, đó là ABBA mọi lúc.
Làm cách nào để sử dụng API lời hứa để đảm bảo cuộc gọi chạy dài (hoặc cuộc gọi bị trì hoãn sử dụng $timeout
) thực sự hoàn tất trước khi .then()
được thực thi?
Mã
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');
}
}
Markup
<div ng-app="app">
<div ng-controller="ThenCtrl as vm">
{{vm.items}}
</div>
</div>
tôi đã thiết lập một fiddle: https://jsfiddle.net/kan3c61t/
Đây là một giải pháp khá thú vị. –
Rất rõ ràng. Sự khác biệt mà các cặp cha mẹ có thể tạo ra. – twip
Điều này đã giúp tôi rất nhiều – Fergus