1. 首页
  2. 编程面试题
  3. 前端
  4. ES6

如何实现 sleep 的效果(es5 或者 es6)



**while 循环的方式**

js
function sleep(ms){

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

while(Date.now()

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

**通过 promise 来实现**

js
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

**通过 async 封装**

js
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

**通过 generate 来实现**

js
function* sleep(ms){
yield new Promise(function(resolve,reject){
console.log(111);
setTimeout(resolve,ms);
})
}

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

发布者:admin,如若转载,请注明出处:https://ai1024.vip/39064.html

QR code
//