6
在Angular中使用$ q時,有關於同步嵌套promise的問題。 以下代碼是否可以確保整個承諾鏈等待?含義是否會在$ 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');
});
基本上:在所有嵌套promise被解析之前,是否有可能使用當前代碼執行$ q.all的then?或者它是遞歸的?
不,我不這麼認爲。在觸發'then()'函數之前''q.all()'會等待'call1','call2'和'call3'一起解析,但是從'call1'和'call3'返回的嵌套異步調用將不會等待。 – Brett 2014-10-03 18:34:11
我的印象是它會等待。 – 2014-10-03 20:28:02
我目前沒有一個角度測試的方便測試,但本機承諾,它肯定會等待。 http://jsfiddle.net/p4evLjm6/ – 2014-10-03 20:34:54