Hai una domanda sulla sincronizzazione di promesse nidificate quando si utilizza $ q in Angular. Il seguente codice garantisce che l'intera catena di promesse sia attesa? Il significato sarà le chiamate annidate ai servizi che le promesse di ritorno saranno attese nel blocco $ 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');
});
In sostanza: C'è una possibilità con il codice corrente che l'allora di $ q.all eseguirà prima che tutte le promesse annidati vengono risolti? O è ricorsivo?
No, non credo. Il '$ q.all()' attenderà che 'call1',' call2' e 'call3' si risolvano insieme prima di attivare la funzione' then() ', ma le chiamate asincrone nidificate ritornano da' call1' e 'call3' non sarà atteso. – Brett
Avevo l'impressione che avrebbe aspettato. –
Non ho un env angolare a portata di mano per testarlo al momento, ma con le promesse native, sicuramente aspetta. http://jsfiddle.net/p4evLjm6/ –