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