【前端八股】手写超时timeout函数
浏览 442 | 评论 0 | 字数 495
TTQ
2022年04月22日
  • 描述

    在执行异步任务时,常会出现操作等待时间过长的问题,如果没有超时函数进行处理,则会阻塞其后的业务代码,因此需要一个timeout函数来捕获操作超时的情况。

    思路

    我们可以利用Promise.race方法来实现超时计时函数和业务函数的"race",只要其中一个Promise率先执行完(不论是解决或拒绝),Promise.race都会有结果(解决或拒绝),也就很容易想到怎么来解决这个问题了。

    代码

    const timeout = (func, time) => {
      const timeOutPromise = (time) => {
        return new Promise((resolve, reject) => {
          setTimeout(() => {
            reject();
          }, time);
        });
      };
      return Promise.race([func, timeOutPromise(time)]);
    };
    本文作者:TTQ
    本文链接:https://blog.ponder.fun/archives/143.html
    最后修改时间:2022-04-22 21:43:53
    本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
    评论
    与本文无关评论请发留言板。请不要水评论,谢谢。
    textsms
    支持 Markdown 语法
    email
    link
    评论列表
    暂无评论