首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >承诺永远是<pending>

承诺永远是<pending>
EN

Ethereum用户
提问于 2019-11-23 18:12:05
回答 2查看 1.2K关注 0票数 0
代码语言:javascript
复制
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)

当我在命令提示符中运行这个命令时:

代码语言:javascript
复制
C:\Users\HP\path
node file.js
Promise { <pending> }

为什么这种事总是发生?我从未执行过事务,因为它们都是“挂起的”。

EN

回答 2

Ethereum用户

回答已采纳

发布于 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完成:

代码语言:javascript
复制
async func() {
    var balance1 = await web3.eth.getBalance('0x0539B9c9C886e93778542XXXC64cb5EAfB902b1');
    console.log(balance1);
}
票数 3
EN

Ethereum用户

发布于 2019-11-23 18:36:58

异步函数返回一个承诺,web3.eth.getBalance(...)就是这样一个函数。您必须等待结果,有两种方法可以这样做:

代码语言:javascript
复制
async function myAsyncFunction() {
  // your code
  console.log(await balance1)
}

或者使用旧的风格:

代码语言:javascript
复制
// 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_函数

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/77756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档