首先会问你以下代码输出的情况是什么?
for (var i = 0; i 5; i++) {
setTimeout(() = {
console.log(i)
}, 1000)
}
答案应该是一秒后输出5个5,就是一秒过后输出5,5,5,5,5
然后叫你实现一个sleep函数,让它隔一秒就输出一次,就是0,1,2,3,4;
function sleep(time){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve()
},time)
})
}
for(let i=0;i<5;i++){
sleep(1000*i).then((data)=>{
console.log(i);
})
}
就是利用了let块级作用域和promise实现这个sleep函数
还可以结合async和await来实现:
( async() =>{
for(let i=0;i<5;i++){
await sleep(1000)
console.log(i);
}
})()
有兴趣的小伙伴可以加我微信Leyman233,可以建个群一起交流前端,我也还是个菜鸟,希望能一起进步!!!