私は約束のAPIと連鎖、特にが.then()
で使用されるタイミングを理解しようとしています。私が次のことから期待していたのは、が約束を返すので、解決されるまで.then()
は呼び出されないということです。
しかし、ABABではなく、常にABBAです。
.then()
が実行される前に、長期の呼び出し(または$timeout
を使用した遅延呼び出し)が実際に完了するように、promise APIを使用するにはどうすればよいですか?
コード
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/
これはかなり面白い解決策です。 –
非常に明確に述べられています。それらのかっこのペアが作ることができる違いは何か。 – twip
これは私を大いに助けました – Fergus