Как сделать тайм-аут после вызова Await для асинхронной функции в Javascript / Node - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть асинхронная функция web3.eth.net.isListening(), которая приводит к тому, что следующий оператор застревает навсегда в случае ошибки:

await web3.eth.net.isListening()

Вопрос: Как мы можем разрешить вышеуказанному await тайм-ауту оператора через 10 секунд и сделать console.log, чтобы показать, что произошла ошибка?

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете использовать Promise.race(), чтобы предоставить второе Обещание, привязанное к тайм-ауту.

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