首页 > 解决方案 > 如何在 Javascript/Node 中的异步函数上调用 Await 后超时

问题描述

我有一个异步函数web3.eth.net.isListening(),如果出现错误,它会导致以下语句永远卡住:

await web3.eth.net.isListening()

问题:如何让上面的await语句在 10 秒后超时,并做 aconsole.log来表明发生了错误?

标签: javascriptnode.jsasynchronouspromiseweb3

解决方案


您可以使用它Promise.race()来提供与超时相关的第二个 Promise。

await Promise.race([
    web3.eth.net.isListening(),
    new Promise(function(resolve) {
        setTimeout(function() {
            console.log('Timed out');
            resolve();
        }, 10000);
    }),
]);

推荐阅读