为什么我的异步等待不等待我的web3.js sendRawTransaction?

时间:2019-02-06 14:10:56

标签: node.js async-await web3js

我有一个异步函数,我称之为。该函数正在等待我的web3.js sendRawTransaction。之后有一个console.log,以测试它是否确实在等待。但是它将在web3完成发送事务之前立即打印。我怀疑sendRawTransaction不是一个承诺,因此无法通过await调用。

这是功能

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消失之后,在看到“图像已发送”之前打印的“异步等待之后。”。但是,相反。

1 个答案:

答案 0 :(得分:0)

不确定,但是您在同一操作中使用了异步/等待和回调。尝试像这样重构:

const hash = await web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'))
console.log(hash)
conosle.log("after aync await..")