Masz pytanie dotyczące synchronizacji zagnieżdżonych obietnic przy użyciu $ q w Angular. Czy poniższy kod zapewni oczekiwanie na cały łańcuch obietnic? Czy zagnieżdżone wywołania usług zwracających obietnice będą czekały w bloku $ q.all?
var call1 = service1.get('/someUr').then(function(){
return service2.get('/someUrl2'); //returns promise
});
var call2 = service3.get('/someUr').then(function(){
return 'hello';
});
var call3 = service4.get('/someUr').then(function(){
return service3.get('/someUrl3');//returns promise
});
$q.all(call1,call2,call3).then(function(){
console.log('All asynch operations are now completed');
});
Zasadniczo: Czy jest szansa z aktualnym kodem, który wówczas od $ q.all wykona przed wszystkimi zagnieżdżonych obietnice zostały rozwiązane? A może jest rekurencyjny?
Nie, nie sądzę. '$ Q.all()' będzie czekał na 'call1',' call2' i 'call3', aby rozwiązać razem przed wyzwoleniem funkcji' then() ', ale zagnieżdżone asynchroniczne wywołania zwracane z' call1' i 'call3' nie będzie czekał. – Brett
Miałem wrażenie, że będzie czekać. –
Nie mam odpowiedniego kątomierza, żeby to przetestować, ale z natywnymi obietnicami, zdecydowanie czeka. http://jsfiddle.net/p4evLjm6/ –