node.js - web3.js 中的连接超时
问题描述
实例化 Web3 实例时,我可以传递提供程序选项,包括超时,例如:
const w3 = new Web3(new Web3.providers.HttpProvider('...', {timeout: 10e3}));
isListening
但是,当我尝试连接到不健康的节点并检查它是否正在侦听时,它似乎不会影响呼叫:
await w3.eth.net.isListening();
正在等待超过我指定的超时时间。
为什么会这样?我怎样才能在那里强制超时?
解决方案
您可以使用Promise.race()来获得与超时相关的第二个承诺。
await Promise.race([
web3.eth.net.isListening(),
new Promise(function(resolve, reject) {
setTimeout(function() {
reject("Time out");
}, 10e3);
})
]);
推荐阅读
- ruby-on-rails - Rails 5 - 未定义的局部变量或方法“post”
- docker - Why is gunicorn calling sys.exit(1)?
- python - discord.py 不使用 pip 安装需要 Visual C++
- mysql - Simple select query in single table
- symfony - Symfony 3:密码验证
- c++ - 使用 clang 禁用调试文件生成
- html - 如何使用python创建html输出?
- sql - 根据条件提取T-SQL中的子字符串
- libgit2sharp - LibGit2Sharp SSH,无法交换加密密钥
- c++ - 遍历 NamespaceDecl 中的所有 CXXMemberCallExpr