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

ES6 中的Promsise.all()方法是不是优先级最高的,在所有的Promise中优先执行?

ES6 中的Promsise.all()方法是不是优先级最高的,在所有的Promise中优先执行?

牛魔王的故事 2018-07-06 22:10:55
<script>       const url="http://127.0.0.1/index.php?id=";   let task = [];   let task01 = function(){        return new Promise( function(resolve , reject){            $.ajax({              url: url+1,              context: document.body,              success: function(){                resolve('success');                 console.log("01");                }           });        })   }   task[0]= new Promise( function(resolve , reject){          $.ajax({            url: url+2,            context: document.body,            success: function(){              resolve('success');               console.log("02");              }         });      })     task[1] = new Promise( function(resolve , reject){         $.ajax({           url: url+3,           context: document.body,           success: function(){             resolve('success');              console.log("03");             }        });     })    task01().then(function(value){         Promise.all(task);    })</script>    先后顺序
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

正常来说应该是先执行task[0]再执行task[1],因为new Promise()里面的函数是立即执行的,所以ajax的执行顺序是task[0]先于task[1]先于task01。

Promise.all()的作用是只有task[0]、task[1]的状态都变成fulfilled,或者其中有一个变为rejected,才会调用Promise.all方法后面的回调函数

所以

task01().then(function(value){
     Promise.all(task);
})

这里的作用就是执行task01里面的ajax,等待状态变成fulfilled,执行Promise.all(task)


查看完整回答
反对 回复 2018-07-13
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

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