美文网首页JavaScript理论知识
11-01:如何实现 sleep 的效果(es5 或者 es6)

11-01:如何实现 sleep 的效果(es5 或者 es6)

作者: 小小前端搬运工 | 来源:发表于2022-05-16 23:13 被阅读0次

(1)while 循环的方式

function sleep(ms){ 

var start=Date.now(),expire=start+ms; 

while(Date.now()<expire); 

console.log('1111'); 

return; 

}

执行 sleep(1000)之后,休眠了 1000ms 之后输出了 1111。上述循环的方式缺点很明显, 容易造成死循环。

(2)通过 promise 来实现

function sleep(ms){ 

var temple=new Promise( 

(resolve)=>{ 

console.log(111);setTimeout(resolve,ms) 

}); 

return temple 

}

sleep(500).then(function(){

//console.log(222) 

})

//先输出了 111,延迟 500ms 后输出 222 

(3)通过 async 封装

function sleep(ms){ 

return new Promise((resolve)=>setTimeout(resolve,ms)); 

}

async function test(){ 

var temple=await sleep(1000); 

console.log(1111) 

return temple 

}

test(); 

//延迟 1000ms 输出了 1111 

(4).通过 generate 来实现

function* sleep(ms){ 

yield new Promise(function(resolve,reject){ 

console.log(111); 

setTimeout(resolve,ms); 

})

}

sleep(500).next().value.then(function(){console.log(2222)}) 

相关文章

网友评论

    本文标题:11-01:如何实现 sleep 的效果(es5 或者 es6)

    本文链接:https://www.haomeiwen.com/subject/eolgurtx.html