Próbuję zrozumieć obietnicę API i łańcuchów, w szczególności czas, kiedy $timeout
jest używany z .then()
. To, czego się spodziewałem, to to, że ponieważ $timeout
zwróci obietnicę, .then()
nie zostanie wywołane, dopóki nie zostanie rozwiązane.
Ale zamiast ABAB, to ABBA cały czas.
Jak mogę skorzystać z interfejsu API obietnicy, aby zapewnić, że długo trwające połączenie (lub opóźnione połączenie za pomocą $timeout
) zostanie faktycznie ukończone przed wykonaniem .then()
?
Kod
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>
mam założyć skrzypce: https://jsfiddle.net/kan3c61t/
To także całkiem ciekawe rozwiązanie. –
Bardzo wyraźnie zaznaczone. Jaką różnicę mogą zrobić te pary nawiasów. – twip
Bardzo mi to pomogło – Fergus