NodeJS 变量范围、函数和回调

NodeJS variable scope, functions and callbacks

我有这样的代码:

var express = require('express');
var router = express.Router();
const Binance = require('node-binance-api');
const binance = new Binance().options({
    APIKEY: 'APIKEY',
    APISECRET: 'APISECRET',
    useServerTime: true
});
r = [];

binance.balance((error, balances) => {
    if ( error ) return console.error(error);
    r = balances;
});

router.get('/', function(req, res, next) {
    res.render("index", {page: 'home', user: req.thisUser, balances: r});
});

module.exports = router;

我如何获取并传递余额以获取参数中的请求? 结果耗时很长return.

谢谢大家

所以我还没有测试过这段代码,我以前从未使用过这个 Binance API 包装器,但我想这应该 work/is 你要问的。

我已经将该调用包装在一个承诺中,这样当你到达路线时它会等到对 Binance 的调用完成,并且它会 return 如果有一个错误或你的余额,在 node-binance-api 的文档中说明如下:

{ BTC: { available: '0.77206464', onOrder: '0.00177975' },
  LTC: { available: '0.00000000', onOrder: '0.00000000' },
  ETH: { available: '1.14109900', onOrder: '0.00000000' },
  BNC: { available: '0.00000000', onOrder: '0.00000000' } }
const express = require('express')
const Binance = require('node-binance-api')

const router = express.Router()

const binance = new Binance().options({
    APIKEY: 'APIKEY',
    APISECRET: 'APISECRET',
    useServerTime: true,
})

const getBalances = () => {
    return new Promise((resolve, reject) => {
        binance.balance((error, balances) => {
            if (error) return reject(error)
            return resolve(balances)
        })
    })
}

router.get('/', async (req, res) => {
    const balances = await getBalances()
    res.render('index', { page: 'home', user: req.thisUser, balances })
})

module.exports = router