我目前正在使用nodejs和web3,并且遇到异步模型以及web3调用的特定实现方面的问题。下面的代码将提供我的具体问题,我相信答案将是可以在其他地方使用的模式。
核心问题:如何在保留所查询帐户上下文的同时使用getBalance请求获得余额?
为简化起见,代码简化。
我有一个列表:
var ethAccounts = ['0xabc', '0xdef', '0x123'];
我的代码将遍历列表,获取每个列表的平衡并对其进行处理。简单吧?我可以使用原型为:
的getBalance()web3.eth.getBalance( account, blockNumber(optional), callback (optional) )
收获:getBalance是返回Promise的异步调用。
var balance = web3.eth.getBalance( ethAccounts[0] );
..余额归还时不再需要。
官方指导是:
web3.eth.getBalance("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
.then(console.log);
> "1000000000000"
我在控制台上不需要该值,因此我构建了一个函数来捕获该值。
web3.eth.getBalance(ethAccounts[0]).then(
function( value ) {
var balance = value;
// In this scope, I *can't see* ethAccounts[0]
console.log(balance);
}
);
在我的功能块中,我都需要 帐户和值。
也许回调可以帮助您
function testCallback( value1, value2 ) {
console.log(value1 + ", " + value2 );
}
web3.eth.getBalance(ethAccounts[0], undefined, testCallback );
控制台输出将是:
100000000000000000000, undefined
我尝试了多种情况:将参数添加到回调,处理程序函数中,尝试使用“ await”欺骗承诺。到目前为止,我还没有可以保留上下文的单一模式。
我是否缺少简单的异步模式Javascript?如何在与请求中拥有帐户相同的范围内接收余额?
非常感谢!