我正在尝试访问通过 npm 运行的变量。我可以直接在函数中获取变量,但我似乎无法使用回调或返回它等将其传递到外部..
这就是我正在尝试做的:
const binance = require("./binance.js");
async function getBalance() {
var balance;
binance.balance((error, balances) => {
if ( error ) return console.error(error);
console.info("USDT Test balance: ", balances.USDT.available);
data = balances.USDT.available;
})
balance = data;
console.log("Balance: ", balance);
return balance;
}
getBalance(function (data) {
console.log("USDT Actual balance: ", Math.round(data));
})
module.exports = getBalance;
我无法将“余额”或“USDT 实际余额”获取到控制台日志,这意味着我没有在返回中获取变量。我的测试平衡很好。
这是我正在使用导出的文件:
const getBalance = require('./module1');
async function getBalanceData() {
try {
const tBalance = await getBalance();
console.log("Budget:", tBalance);
return tBalance;
} catch (error) {
console.error("Error fetching budget:", error);
}
}
getBalanceData().then((tBalance) => {
console.log("Try getting the balance here:",tBalance);
})
And here is the repsonse:
Budget: undefined
Try getting the balance here: undefined
由于
binance.balance
显然是一个基于回调的异步函数,因此您需要使用 new Promise
模式来承诺它(或者,util.promisify
在 Node.js 领域也可以工作,但这就是方法你会手工完成):
const binance = require("./binance.js");
async function getBalance() {
return new Promise((resolve, reject) => {
binance.balance((error, balances) => {
if (error) return reject(error);
console.info("USDT Test balance: ", balances.USDT.available);
resolve(balances.USDT.available);
});
});
}
async function getBalanceData() {
try {
const tBalance = await getBalance();
console.log("Budget:", tBalance);
return tBalance;
} catch (error) {
console.error("Error fetching budget:", error);
}
}
getBalanceData().then((tBalance) => {
console.log("Try getting the balance here:", tBalance);
})