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

<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>    

正常来说应该是先执行task01里面的ajax,然后在执行了Promise.all()里面的ajax,为什么先执行了Promise.all()后在执行task01里面的ajax
图片描述

阅读 2.2k
1 个回答

正常来说应该是先执行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)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题