美文网首页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