NodeJS переменная область действия, функции и обратные вызовы - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть такой код:

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;

Как я могу получить и передать балансы, чтобы получить запрос в параметрах? Результат займет много времени.

Спасибо всем.

1 Ответ

1 голос
/ 10 апреля 2020

Так что я не тестировал этот код, я никогда раньше не использовал эту оболочку Binance API, но я бы подумал, что это должно работать / это то, что вы просите.

Я завернул этот вызов в обещание, что при достижении маршрута он будет ждать завершения вызова Binance и вернется с ошибкой, если она есть, или с вашими балансами, как показано в документации для 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
...