我有一个我调用的异步函数。该函数有一个等待我的 web3.js sendRawTransaction
的过程。我在它后面有一个console.log来测试它是否确实等待。但它会在 web3 完成发送交易之前立即打印。我怀疑 sendRawTransaction
不是一个 promise ,因此无法通过等待调用。
这是函数
async function sendImage() {
var count = web3.eth.getTransactionCount(Wallet1);
var rawTransaction = {
"from": Wallet1,
"nonce": web3.toHex(count),
"gasPrice": "0x2540BE400",
"gasLimit": "0x3A980",
"to": imageContract,
"value": "0x0",
"data": imageContractABI.startGame.getData(2, {from: Wallet1}),
"chainId": 0x04
};
var privKey = new Buffer (PrivKey1, 'hex');
var tx = new Tx(rawTransaction);
tx.sign(privKey);
var serializedTx = tx.serialize();
await web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'), function(err, hash) {
if (!err){
console.log("Image is sent " + hash);
}
else
console.log(err);
});
console.log("after aync await..");
}
我想在 web3 消失后、看到“图像已发送”之前看到“after async wait..”打印。但是,我的想法恰恰相反。
我不确定,但您在同一操作中使用异步/等待和回调。尝试像这样重构:
const hash = await web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'))
console.log(hash)
conosle.log("after aync await..")
我是一名优秀的程序员,十分优秀!