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

标签 node.js async-await web3js

我有一个我调用的异步函数。该函数有一个等待我的 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..")

关于node.js - 为什么我的异步等待不等待我的 web3.js sendRawTransaction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54555603/

相关文章:

在 docker 容器中运行的 Node.js 应用程序无法访问

javascript - PHP 与除 Apache 之外运行的 Node.js (Socket.io) 进行通信

wpf - WCF 异步操作并非真正异步

javascript - 选择 html 元素文本作为 JavaScript 的输入

javascript - 智能合约方法不是 web3 中的函数

javascript - 与 knex 的未定义数据库连接

node.js - 在sequelize中双重包含,node.js

c# - System.Timers.Timer 的 Elapsed 回调可以是异步的吗?

javascript - 如何在 React-router 包装器中处理异步请求

javascript - 无法从 NodeJS 中的 Promise 更新全局变量