常规面试题:
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
考察点:变量作用域,异步实现