Почему мой асинхронный await не ждет моего web3.js sendRawTransaction? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть асинхронная функция, которую я вызываю.Функция ожидает моего web3.js sendRawTransaction.У меня есть console.log после него, чтобы проверить, действительно ли он ждет.Но он немедленно печатает, прежде чем web3 завершит отправку транзакции.Я подозреваю, что sendRawTransaction не обещание, и поэтому не может быть вызвано через ожидание.

Вот функция

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 голосов
/ 06 февраля 2019

Я не уверен, но вы используете async / await и callback в одной и той же операции.Попробуйте рефакторинг так:

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