新建一个sleep(延迟)函数

sleep(1000) 意味着等待1000毫秒执行

想到延迟很容易会用setTimeout函数,但由于这是异步操作无法同步化,那么利用好promise这个问题就很好解决了!!

    const sleep = time=>{
        return new Promise(resolve=>setTimeout(resolve,time))
    }

那么new Promise(resolve=>setTimeout(resolve,time))就是sleep函数的核心了

    //ES5写法

    var sleep = function(time){
        return new Promise(function(resolve){
            return setTimeout(function(){
               resolve()
            },time)
        })
    }


    sleep(1000).then(()=>{
        console.log(1)
    })

更早之前,ES5的时候都是使用回调的形式

    function sleep(callback,time){
        if(typeof callback==='function'){
            setTimeout(callback,time)
        }
    }

    function out(){
        console.log(1)
    }

    sleep(out,1000)

这样并没有同步化,其实不是很好,还是建议使用promise

    // async awit

    function sleep(time) {
         return new Promise(resolve => setTimeout(resolve,time))
    }
    async function output() {
            let out = await sleep(1000);
            console.log(1);
            return out;
          }
    output();
还可以配合generator函数
    function * generator(time){
        yield new Promise(resolve=>setTimeout(resolve,time))
    
    }

    generator(1000).next().value.then(()=>{
        console.log(1)
    })

这玩意其实还有一种玩法

    function * generator(time){
        yield new Promise(resolve=>setTimeout(resolve,time))
        yield new Promise(resolve=>setTimeout(resolve,time*2))
        yield new Promise(resolve=>setTimeout(resolve,time*3))
        yield new Promise(resolve=>setTimeout(resolve,time*4))
        yield new Promise(resolve=>setTimeout(resolve,time*5))
    }



    for( i of generator(1000)){
        i.then(()=>{
            console.log(1)
        })
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 12,777评论 1 56
  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 4,388评论 0 2
  • 一、Javascript实现异步编程的过程以及原理 1、为什么要用Javascript异步编程 众所周知,Java...
    Ebony_7c03阅读 4,306评论 0 2
  • 含义 async函数是Generator函数的语法糖,它使得异步操作变得更加方便。 写成async函数,就是下面这...
    oWSQo阅读 5,995评论 0 2
  • async 函数 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是...
    huilegezai阅读 5,008评论 0 6