如何选择在Node Js中先调用哪个函数
How to choose which function is called first in Node Js
我目前正在使用 Ether 包和 NodeJS 来学习一些东西。
这是我的代码:
var ethers = require('ethers');
var providers = require('ethers').providers;
var infuraProvider = new providers.InfuraProvider(process.argv[3]);
infuraProvider.getBlockNumber().then(function(blockNumber) {
console.log("Current block number: " + blockNumber);
});
infuraProvider.getGasPrice().then(function(gasPrice) {
console.log("Current gas price: " + gasPrice.toString());
});
它基本上是从我的参数中获取网络,然后获取blockNumber和gasPrice。
所以如果 运行 这个,这就是我得到的:
Current block number: 5083149
Current gas price: 8000000000
这就是我想要的。但有时,它会在区块编号之前给出 gas 价格,例如:
Current gas price: 8000000000
Current block number: 5083149
我怎样才能编辑我的代码,让它总是先给出块号?我尝试使用 .then
关键字,但未能成功。
谢谢
您可以这样做:
infuraProvider.getBlockNumber().then(function(blockNumber) {
console.log("Current block number: " + blockNumber);
infuraProvider.getGasPrice().then(function(gasPrice) {
console.log("Current gas price: " + gasPrice.toString());
});
});
否则,您基本上是在竞速这两个 Promise,并且可能无法确定哪个先进行。
或者,在异步函数中,您可以这样做:
var printDetails = async function()
{
let blockNumber = await infuraProvider.getBlockNumber();
console.log("Current block number: " + blockNumber);
let gasPrice = await infuraProvider.getGasPrice();
console.log("Current gas price: " + gasPrice.toString());
}
printDetails();
试试这个
infuraProvider.getBlockNumber().then(function(blockNumber) {
console.log("Current block number: " + blockNumber);
return infuraProvider.getGasPrice();
}).then(function(gasPrice) {
console.log("Current gas price: " + gasPrice.toString());
});
我目前正在使用 Ether 包和 NodeJS 来学习一些东西。
这是我的代码:
var ethers = require('ethers');
var providers = require('ethers').providers;
var infuraProvider = new providers.InfuraProvider(process.argv[3]);
infuraProvider.getBlockNumber().then(function(blockNumber) {
console.log("Current block number: " + blockNumber);
});
infuraProvider.getGasPrice().then(function(gasPrice) {
console.log("Current gas price: " + gasPrice.toString());
});
它基本上是从我的参数中获取网络,然后获取blockNumber和gasPrice。 所以如果 运行 这个,这就是我得到的:
Current block number: 5083149
Current gas price: 8000000000
这就是我想要的。但有时,它会在区块编号之前给出 gas 价格,例如:
Current gas price: 8000000000
Current block number: 5083149
我怎样才能编辑我的代码,让它总是先给出块号?我尝试使用 .then
关键字,但未能成功。
谢谢
您可以这样做:
infuraProvider.getBlockNumber().then(function(blockNumber) {
console.log("Current block number: " + blockNumber);
infuraProvider.getGasPrice().then(function(gasPrice) {
console.log("Current gas price: " + gasPrice.toString());
});
});
否则,您基本上是在竞速这两个 Promise,并且可能无法确定哪个先进行。
或者,在异步函数中,您可以这样做:
var printDetails = async function()
{
let blockNumber = await infuraProvider.getBlockNumber();
console.log("Current block number: " + blockNumber);
let gasPrice = await infuraProvider.getGasPrice();
console.log("Current gas price: " + gasPrice.toString());
}
printDetails();
试试这个
infuraProvider.getBlockNumber().then(function(blockNumber) {
console.log("Current block number: " + blockNumber);
return infuraProvider.getGasPrice();
}).then(function(gasPrice) {
console.log("Current gas price: " + gasPrice.toString());
});