javascript - 如何在 Javascript/Node 中的异步函数上调用 Await 后超时
问题描述
我有一个异步函数web3.eth.net.isListening()
,如果出现错误,它会导致以下语句永远卡住:
await web3.eth.net.isListening()
问题:如何让上面的await
语句在 10 秒后超时,并做 aconsole.log
来表明发生了错误?
解决方案
您可以使用它Promise.race()
来提供与超时相关的第二个 Promise。
await Promise.race([
web3.eth.net.isListening(),
new Promise(function(resolve) {
setTimeout(function() {
console.log('Timed out');
resolve();
}, 10000);
}),
]);
推荐阅读
- java - 无法检查 json 空节点
- c++ - 有没有可能在迭代循环中有另一个迭代器的方法?
- scala - 在执行上下文中获得在后台运行的期货数量的最佳方法是什么?
- javascript - Reactjs:为什么 Carousel 根本没有显示?
- arrays - 循环数组上最大连续和的递归分治法
- angular - 为什么 RoutingModule 在我的 Angular 应用程序中不起作用?
- mongodb - Mongodb投影获取数组对象
- php - Doctrine 将结果格式化为字符串数组
- javascript - Node-RED 如何使用 Switch 和 case 将 json 对象传递到多输出功能节点
- python - uid 在 python 中是什么意思,是关键字还是变量?