美文网首页前端100问
【前端100问】Q42:实现一个 sleep 函数

【前端100问】Q42:实现一个 sleep 函数

作者: alanwhy | 来源:发表于2021-01-07 15:49 被阅读0次

    写在前面

    此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我
    为了备战 2021 春招
    每天一题,督促自己
    从多方面多角度总结答案,丰富知识
    实现一个 sleep 函数,比如 sleep(1000) 意味着等待 1000 毫秒,可从 Promise、Generator、Async/Await 等角度实现
    简书整合地址:前端 100 问

    正文回答

    // Promise
    const sleep = (time) => {
      return new Promise((resolve) => setTimeout(resolve, time));
    };
    
    sleep(1000).then(() => {
      // do something
    });
    
    async function sleepAsync() {
      console.log("fuck the code");
      await sleep(1000);
      console.log("fuck the code again");
    }
    
    sleepAsync();
    
    // Generator
    function* sleepGenerator(time) {
      yield new Promise(function (resolve, reject) {
        setTimeout(resolve, time);
      });
    }
    sleepGenerator(1000)
      .next()
      .value.then(() => {
        console.log(1);
      });
    
    // ES5
    function sleep(callback, time) {
      if (typeof callback === "function") setTimeout(callback, time);
    }
    
    function output() {
      console.log(1);
    }
    sleep(output, 1000);
    

    相关文章

      网友评论

        本文标题:【前端100问】Q42:实现一个 sleep 函数

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