繁体   English   中英

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

[英]Best practice: How to handle 120sec timeout of contract callbacks?

有了Truffle,我们可以很好地打包合同。 但是它具有一个让我头疼的功能:

文档中的示例:

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) 我无法在Ganache上进行本地测试。
  3. 您如何告知用户交易状态? 在任何情况下,您是否都显示了“交易成功”,还是在这120秒的时间内使用了某种类型的rob动功能(这就是我现在正在考虑的功能)?
  4. 如何尽快获得TX哈希? 通过MEW发送,即使交易尚未传播,我也立即获得了到etherscan.io的交易链接。

尤其是问题1让我头疼。

问候

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

在web3中进行交易时,即使在被挖掘之前,您也会收到txhash作为响应的一部分。 您可以向用户显示该消息以及未决状态,并可以使用Web3的筛选器在挖掘时为回调设置侦听器,而不会遇到超时问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM