<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
正常来说应该是先执行task[0]再执行task[1],因为new Promise()里面的函数是
立即执行
的,所以ajax的执行顺序是task[0]先于task[1]先于task01。Promise.all()的作用是只有task[0]、task[1]的状态都变成fulfilled,或者其中有一个变为rejected,才会调用Promise.all方法后面的回调函数
所以
这里的作用就是执行task01里面的ajax,等待状态变成fulfilled,执行
Promise.all(task)