我有Dapp,用户使用web3进行智能合约的应付账款。
contract.methods.bet(数字)。发送({ 来自:accounts [0], 煤气:3000000, value:web3.utils.toWei(bet.toString(),‘ether’)},…
当事务被挖掘时,您将获得收据ID,这表示事务已执行。因此,您可以在获得收据ID后执行下一个功能。 如果你想在下一个块中执行它,可能会在dapp中创建一个延迟平均时间为14-15秒( 参考 )并在延迟14-15秒后执行另一个功能
当您将交易发送到区块链时,我们从头开始,您将收到一个 transactionHash 马上。那 txHash 您可以使用它来检查您的tx何时被接受(包含在一个块中)或被拒绝,
transactionHash
txHash
您可以使用多种替代方法 web3官方文档
其中一个可能是:
contract.methods.bet(number).send({ from: accounts[0], gas: 3000000, value: web3.utils.toWei(bet.toString(), 'ether') }, (error, transactionHash) => { if(error) // Handle the error else { txReceipt = null; while(true) { let txReceipt = web3.eth.getTransactionReceipt(txReceiptId); if (txReceipt != null && typeof txReceipt !== 'undefined') { break; } } if (txReceipt.status == "0x1") // Actions to take when tx success else // Actions to take when tx fails } })
另一个较短的选择可能是:
contract.methods.bet(number).send({ from: accounts[0], gas: 3000000, value: web3.utils.toWei(bet.toString(), 'ether') }).on('receipt', (txReceipt) => { if (txReceipt.status == "0x1") // Actions to take when tx success else // Actions to take when tx fails })
因此,没有必要随机使用14-15s等待你的等待:)