var Tx = require('ethereumjs-tx').Transaction
var Web3 = require('web3')
web3 = new Web3('https://mainnet.infura.io/v3/a47d55XXXXXXXXXXX')
var balance1 = web3.eth.getBalance('0x0539B9c9C886e93778542XXXC64cb5EAfB902b1')
console.log(balance1)当我在命令提示符中运行这个命令时:
C:\Users\HP\path
node file.js
Promise { <pending> }为什么这种事总是发生?我从未执行过事务,因为它们都是“挂起的”。
发布于 2019-11-23 18:37:38
web3.eth.getBalance对给定的web3实例连接到的Ethereum进程进行RPC (远程过程调用)(在您的示例中是https://mainnet.infura.io)。
此过程将发送响应,而您的进程可以继续运行,并在代码的其他位置等待该响应。
因此,web3.eth.getBalance返回Promise对象,您需要在执行程序的某个时候解析该对象。
例如,如果您想立即执行此操作,则可以在async函数和await中运行这段代码以供web3.eth.getBalance完成:
async func() {
var balance1 = await web3.eth.getBalance('0x0539B9c9C886e93778542XXXC64cb5EAfB902b1');
console.log(balance1);
}发布于 2019-11-23 18:36:58
异步函数返回一个承诺,web3.eth.getBalance(...)就是这样一个函数。您必须等待结果,有两种方法可以这样做:
async function myAsyncFunction() {
// your code
console.log(await balance1)
}或者使用旧的风格:
// your code
balance1.then((balance) => {
console.log(balance);
});承诺:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_对象/承诺异步:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_函数
https://ethereum.stackexchange.com/questions/77756
复制相似问题