如何在Javascript / Node中的异步函数上调用Await后超时

Nyx*_*nyx 0 javascript asynchronous node.js promise web3-donotuse

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

await web3.eth.net.isListening()
Run Code Online (Sandbox Code Playgroud)

问题:如何让上述await语句在10秒后超时,并执行a console.log来表明已发生错误?

小智 7

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

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

  • .race的好主意,但我会拒绝您的超时。 (5认同)