在执行异步任务时,常会出现操作等待时间过长的问题,如果没有超时函数进行处理,则会阻塞其后的业务代码,因此需要一个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 授权协议,转载请注明来源,谢谢!