如何使用和打印 Promise 结果?
How do I consume and print a Promise result?
我正在尝试从币安智能链 (BSC) 获取当前区块编号。
在 documentation、provider.getBlockNumber() returns 一个 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();
这 returns 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()
因为它应该在原始 post.
中
@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
>
您是指 return blockNumber;
而不是 return blockNumber();
吗?
我正在尝试从币安智能链 (BSC) 获取当前区块编号。 在 documentation、provider.getBlockNumber() returns 一个 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();
这 returns 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()
因为它应该在原始 post.
@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
>
您是指 return blockNumber;
而不是 return blockNumber();
吗?