- 投机取巧版
var counts=1;
async function aa(arg){
return arg;
}
aa(counts).then((res)=>{
setTimeout(function(){
console.log(res)
setTimeout(arguments.callee,(res++)*1000)
},res*1000)
})
- 正解
js一直没有类似于sleep这种方法,因此完全可以用promise构造一个休眠函数,结合async/await就可以实现功能,这也是解决setTimeout不准确的一种方式
function sleep(interval){
return new Promise((resolve)=>
setTimeout(resolve, interval);
});
}
async function stepPrint(n){
for(let i=0;i<=n;i++){
console.log(i);
await sleep(i*10000);
}
}
stepPrint(5)