promise 解决异步问题

来源:互联网 发布:linux共有多少命令 编辑:程序博客网 时间:2024/05/01 02:31

常规面试题:


 for(var i = 0; i < 5; i++){
setTimeout(function(){
console.log(new Date, i)
}, 1000);
}


console.log(new Date, i)


5->5,5,5,5,5


promise方法实现:

const task = [];

for(var i = 0; i < 5; i++){
((j)=>{
task.push(new Promise((resolve)=>{
setTimeout(()=>{
console.log(new Date,j);
resolve();
},1000*j)
}))
})(i)
}


Promise.all(task).then(()=>{
setTimeout(()=>{
console.log(new Date, i)
},1000)

})


0->1->2->3->4->5


考察点:变量作用域,异步实现

0 0