首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳实践:如何处理合同回调的120秒超时?

最佳实践:如何处理合同回调的120秒超时?
EN

Stack Overflow用户
提问于 2018-07-29 19:24:56
回答 1查看 594关注 0票数 2

有了特松露,我们就有了一个很好的合同包装。但它有一个让我头疼的特点:

来自文档的示例

代码语言:javascript
复制
MetaCoin.at(contract_address).then(function(instance) {
  coin = instance;
  return coin.sendCoin(account_two, 3, {from: account_one});
}).then(function(result) {
  // This code block will not be executed until truffle-contract has verified
  // the transaction has been processed and it is included in a mined block.
  // truffle-contract will error if the transaction hasn't been processed in 120 seconds.
})

这就提出了四个问题:

  1. 如何防止用户超时120秒,因为他的交易可能在几分钟后仍会被开采(取决于天然气价格和网络条件)?如果我们谈论的是以太发送交易,这一点尤其重要。我不想通过声称交易失败而欺骗我的用户(并建议他们重复)。
  2. 哪里会出错?在带有第二个参数(function(result, error))或整件事(.then( function(result) {...} ).catch(e))的回调中?我不能用假名在本地测试。
  3. 如何告知用户事务状态?在任何情况下,您是否正在显示“事务成功”,还是在这120秒的时间内使用某种throbber (这就是我现在正在考虑的)?
  4. 如何尽快得到tx-哈希?通过与MEW一起发送,我立即获得到etherscan.io的事务链接--即使事务尚未传播。

尤其是第一个问题让我头疼。

问候

EN

回答 1

Stack Overflow用户

发布于 2018-07-29 22:10:17

超时仅仅是一种松露。网络不会超时,当使用web3或类似的包装器开发应用程序时,您只需继续监听,直到tx成为矿工,或者页面关闭。

当您在web3中进行事务处理时,您将接收tx散列作为响应的一部分,甚至在它被挖掘之前。您可以将其显示给用户,以及挂起的状态,并使用Web3 3的筛选器在挖掘回调时为其设置侦听器,而不会遇到超时问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51583800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档