如何在承诺中添加超时



我读过许多在promise中添加超时的不同方法,但大多数(如果不是全部的话(似乎都使用了setTimeout()方法。根据定义:

The setTimeout() method calls a function or evaluates an expression after a specified number of milliseconds.

我正在寻找的是一种表达方式:

"If the function executed inside the promise (that will either resolve or
reject the promise), does not complete within a specified x number of
milliseconds, automatically reject or raise an exception."

如果这与上面定义的相同(使用setTimeout()方法(,将非常感谢您的解释!

您可以将setTimeout封装在Promise中,并创建一个小的"等待"-然后可以与Promise.race:一起使用的函数

function wait(ms) {
return new Promise((_, reject) => {
setTimeout(() => reject(new Error('timeout succeeded')), ms);
});
}
try {
const result = await Promise.race([wait(1000), yourAsyncFunction()]);
} catch(err) {
console.log(err);
} 

使用此代码,如果yourAsyncFunction的解析/拒绝时间超过1000ms,则Promise.race将被拒绝,否则result将从yourAsyncFunction生成解析值。

相关内容

  • 没有找到相关文章

最新更新