angularjs – $q.all和嵌套的承诺
发布时间:2020-12-17 07:09:49 所属栏目:安全 来源:网络整理
导读:在Angular中使用$q时,有一个关于同步嵌套promise的问题. 以下代码是否会确保等待整个承诺链?意味着在$q.all块中等待返回promises的服务的嵌套调用? var call1 = service1.get('/someUr').then(function(){ return service2.get('/someUrl2'); //returns pr
在Angular中使用$q时,有一个关于同步嵌套promise的问题.
以下代码是否会确保等待整个承诺链?意味着在$q.all块中等待返回promises的服务的嵌套调用? 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?还是递归? 解决方法
是的,看起来Kevin是正确的.我还创建了一个角度快速测试来确认行为.
angular.module('myModule').controller('testController',function ($q,$scope) { function promiseCall(data,timeout) { var deferred = $q.defer(); setTimeout(function() { deferred.resolve(data); console.log(data); },timeout); return deferred.promise; } var a = promiseCall('call1 a',1000).then(function(){ return promiseCall('call2 a',50); }); var b = promiseCall('call1 b',500); var c = promiseCall('call1 c',1000).then(function(){ return promiseCall('call2 c',50).then(function(){ return promiseCall('call3 c',6000); }); }); $q.all([a,b,c]).then(function(res){ console.log('all calls are done'); }); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- AngularJS和PhoneGap:$location.path导致后续tempateUrl查
- typescript – 使用FormBuilder Angular 2绑定选择列表
- 如何使用AngularJS动画实现翻转效果?
- Scala Memoization:这个Scala备忘录是如何工作的?
- scala – 将类[_]转换为universe.Type / Symbol
- 将参数从R返回到bash
- angularjs – 如何在ngDialog中设置对话框宽度
- scala – 如何测试一个值为AnyVal?
- 【linux报错】-bash: xhost: command not found
- .NET Core中使用Redis与Memcached的序列化问题详析