为了账号安全,请及时绑定邮箱和手机立即绑定

es6中的promise.all使用问题

es6中的promise.all使用问题

慕码人2483693 2018-10-24 17:15:22
promise.all接收的promise数组是按顺序执行的还是一起执行的,也就是说返回的结果顺序是固定的吗。edit1:根据大家的回答,应该是同步执行的,但是这样就有效率问题了,如果想改成异步执行怎么办呢。edit2:弄糊涂了,有些人认为结果是按顺序返回,有些人认为结果顺序不确定。var a = new Promise(function  (resolve,reject) {     setTimeout(function  () {         resolve('aaa');     },3000); });var b = new Promise(function  (resolve,reject) {     setTimeout(function  () {         resolve('bbb');     },1000); });var p = Promise.all([a,b]); p.then(function(val) {    console.log(val); });//结果:['aaa','bbb']我写了个测试,可以看到a的时间虽然比较长,但a的结果确实排在了b的前面。返回结果的确是按顺序排列的。但是,var a = new Promise(function  (resolve,reject) {     setTimeout(function  () {         resolve('aaa');     },3000); });var b = new Promise(function  (resolve,reject) {     setTimeout(function  () {         resolve('bbb');     },3000);//改成3秒});var p = Promise.all([a,b]); p.then(function(val) {    console.log(val); });//结果:['aaa','bbb']将b的时间也改成3秒后,发现整体运行时间并没有改变。所以我认为,promise应该是并发执行的,这样的话结果返回的顺序应该也是乱的,但promise.all内部不晓得做了啥处理,让返回结果的排序又正常了。不晓得我的理解对不对。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 639 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信