Haben Sie eine Frage zum Synchronisieren verschachtelter Versprechen, wenn Sie $ q in Angular verwenden. Wird der folgende Code sicherstellen, dass auf die gesamte Kette der Versprechen gewartet wird? Bedeutung werden die verschachtelten Aufrufe an Dienste, die Versprechen zurückgeben, im Block $ q.all erwartet?
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');
});
Grundsätzlich gilt: Gibt es eine Chance, mit dem aktuellen Code, der die dann von $ q.all wird, bevor alle verschachtelten Versprechen ausführen gelöst werden? Oder ist es rekursiv?
Nein, ich glaube nicht. Die '$ q.all()' wartet auf 'call1',' call2' und 'call3', um zusammen zu lösen, bevor die' then() '-Funktion ausgelöst wird, aber die verschachtelten Async-Aufrufe von' call1' und 'call3' wird nicht gewartet. – Brett
Ich hatte den Eindruck, dass es warten würde. –
Ich habe kein eckiges env, um das im Moment zu testen, aber mit nativen Versprechungen wartet es definitiv. http://jsfiddle.net/p4evLjm6/ –