Ich versuche zu verstehen, die Versprechen API und Verkettung, insbesondere das Timing, wenn $timeout
mit verwendet wird. Was ich von dem folgenden erwartet hatte, ist, dass $timeout
ein Versprechen zurückgibt, würde nicht aufgerufen werden, bis es aufgelöst wurde.
Aber statt ABAB ist es ABBA die ganze Zeit.
Wie kann ich mithilfe der Promise-API sicherstellen, dass ein lang andauernder Anruf (oder ein verzögerter Anruf unter Verwendung von $timeout
) tatsächlich abgeschlossen ist, bevor die ausgeführt wird?
-Code
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>
ich eine Geige eingerichtet haben: https://jsfiddle.net/kan3c61t/
Dies ist auch eine ziemlich interessante Lösung. –
Sehr deutlich angegeben. Was für ein Unterschied diese Klammernpaare machen können. – twip
Das hat mir enorm geholfen – Fergus