如何使用和打印 Promise 结果?

我正在尝试从币安智能链 (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
>
chenjiacong2009 回答:如何使用和打印 Promise 结果?

你是说 return blockNumber; 而不是 return blockNumber();

本文链接:https://www.f2er.com/50489.html

大家都在问