在 NPM 内部函数之外从 NPM 访问变量

问题描述 投票:0回答:1

我正在尝试访问通过 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
node.js npm
1个回答
0
投票

由于

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);
})
© www.soinside.com 2019 - 2024. All rights reserved.