我正在尝试从币安智能链 (BSC) 获取当前区块号。 在 documentation 中,provider.getBlockNumber() 返回一个 Promise 对象。
这是我尝试使用当前块号并将其打印到控制台。 我使用的是 Node.js v16.5.0 和 Ethers.js 5.4.1。
var ethers = require("ethers");
var url = "wss://bsc-ws-node.nariox.org:443";
const provider = new ethers.providers.WebSocketProvider(url);
const blockNumber = async function() {
return await provider.getBlockNumber();
}
console.log(blockNumber());
process.exit();
这会在控制台上返回 Promise { <pending> }
。
这段代码:
var ethers = require("ethers");
var url = "wss://bsc-ws-node.nariox.org:443";
const provider = new ethers.providers.WebSocketProvider(url);
async function blockNumber() {
const blockNumber = await provider.getBlockNumber();
return blockNumber();
}
blockNumber().then(data => {console.log(data)});
process.exit();
在控制台中完全没有输出,几乎就像代码中没有任何错误一样。
预期输出应该是一个数字,比如 9380976。
我哪里做错了?
编辑 1:添加了 process.exit()
,因为它应该在原始帖子中。
@purple 的回答:
var ethers = require("ethers");
var url = "wss://bsc-ws-node.nariox.org:443";
const provider = new ethers.providers.WebSocketProvider(url);
async function blockNumber() {
const blockNumber = await provider.getBlockNumber();
return blockNumber;
}
blockNumber().then(data => {
console.log(data)
process.exit();
});
结果:
> node app
*pauses for a bit,then prints*
9397167
>