鍍金池/ 問答/HTML/ ES6 中的Promsise.all()方法是不是優(yōu)先級最高的,在所有的Prom

ES6 中的Promsise.all()方法是不是優(yōu)先級最高的,在所有的Promise中優(yōu)先執(zhí)行?

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

正常來說應(yīng)該是先執(zhí)行task01里面的ajax,然后在執(zhí)行了Promise.all()里面的ajax,為什么先執(zhí)行了Promise.all()后在執(zhí)行task01里面的ajax
圖片描述

回答
編輯回答
久不遇

正常來說應(yīng)該是先執(zhí)行task[0]再執(zhí)行task[1],因?yàn)閚ew Promise()里面的函數(shù)是立即執(zhí)行的,所以ajax的執(zhí)行順序是task[0]先于task[1]先于task01。

Promise.all()的作用是只有task[0]、task[1]的狀態(tài)都變成fulfilled,或者其中有一個變?yōu)閞ejected,才會調(diào)用Promise.all方法后面的回調(diào)函數(shù)

所以

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

這里的作用就是執(zhí)行task01里面的ajax,等待狀態(tài)變成fulfilled,執(zhí)行Promise.all(task)

2018年1月17日 03:24