将 BN 转换为数字

sel*_*sel 4 javascript truffle web3js

在松露控制台中我正在执行以下语句,

result = token.balanceOf(accounts[1])
Run Code Online (Sandbox Code Playgroud)

该语句返回以下输出。

<BN: 8ac7230489e80000>
Run Code Online (Sandbox Code Playgroud)

正如这里所建议的,我正在尝试使用toNumber()and toString。但我收到以下错误。

result = token.balanceOf(accounts[1])
result.toString()
output: '[object Promise]'
result.toNumber()
TypeError: result.toNumber is not a function
Run Code Online (Sandbox Code Playgroud)

Ofi*_*uch 7

根据输出,您似乎得到了一个 Promise。在运行“result.toString()”命令时 - 它仍然是一个尚未兑现的承诺。

正如 @Saddy 在评论中提到的,您需要等待承诺履行,然后才能对其值使用 toString() 方法。

您应该在方法之前添加“await”。

请参阅 truffle 文档 ( https://www.trufflesuite.com/docs/truffle/quickstart )中的示例:

检查部署合约的账户的元币余额:

truffle(development)> let balance = await instance.getBalance(accounts[0])
truffle(development)> balance.toNumber()
Run Code Online (Sandbox Code Playgroud)