使用async 和 await 每隔1s 2s 3s打印

1.投机取巧版

 1 var counts=1;
 2 async function aa(arg){
 3  return arg;
 4 }
 5 aa(counts).then((res)=>{
 6    setTimeout(function(){
 7     console.log(res)
 8     setTimeout(arguments.callee,(res++)*1000)
 9    },res*1000)
10 })

2.正解

js一直没有类似于sleep这种方法,因此完全可以用promise构造一个休眠函数,结合async/await就可以实现功能,这也是解决setTimeout不准确的一种方式

 1 function sleep(interval){
 2 return new Promise((resolve)=>    
 3     setTimeout(resolve, interval);
 4           });
 5 }
 6 async function stepPrint(n){
 7     for(let i=0;i<=n;i++){
 8          console.log(i);
 9         await  sleep(i*10000);
10          }
11 }
12 stepPrint(5)

猜你喜欢

转载自www.cnblogs.com/ajaxkong/p/12595727.html