微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Binance Data 中从 json 打开、关闭

如何解决在 Binance Data 中从 json 打开、关闭

如何打开一个json的baseAssetVolume。我正在使用 Binance NodeJs 包,我想查询 open 和其他值。

这是从站点文档中获取完整数据的代码

const api = require('binance');
const binanceWS = new api.BinanceWS(true);
const streams = binanceWS.streams;

binanceWS.onCombinedStream(
    [
     streams.ticker('BNBBTC')
    ],streamEvent => {
        switch (streamEvent.stream) {
            case streams.ticker('BNBBTC'):
            console.log(
               'Ticker event,update market stats\n',streamEvent.data
            );
            break;
        }
    }
);

这是返回的数据。

   {
  eventType: '24hrTicker',eventTime: 1619369591449,symbol: 'BNBBTC',priceChange: '0.00014790',priceChangePercent: '1.474',weightedAveragePrice: '0.01006976',prevIoUsClose: '0.01003790',currentClose: '0.01018500',closeQuantity: '40.36000000',bestBid: '0.01018460',bestBidQuantity: '7.55000000',bestAskPrice: '0.01018500',bestAskQuantity: '58.91000000',open: '0.01003710',high: '0.01026090',low: '0.00977950',baseAssetVolume: '401687.43000000',quoteAssetVolume: '4044.89583374',openTime: 1619283191026,closeTime: 1619369591026,firstTradeId: 136462988,lastTradeId: 136653082,Trades: 190095
}

解决方法

在 node.js 中,您可以使用 let 声明变量并使用 const 声明常量。您可以使用点访问对象的属性,也可以使用数组键。

switch (streamEvent.stream) {
    case streams.ticker('BNBBTC'):
        // declaring constant,accessing the `open` property with a dot
        const open = streamEvent.data.open;

        // declaring variable,accessing the property as it was an array key
        let baseAssetVolume = streamEvent.data['baseAssetVolume'];

        break;
}

您可能还会遇到范围界定问题。在 Javascript 中,变量仅在创建它们的块(在您的情况下为 streamEvent => {)和嵌套块中可见。

如果要访问更高作用域中的值,则需要定义更高作用域中的变量。

const api = require('binance');
const binanceWS = new api.BinanceWS(true);
const streams = binanceWS.streams;

let open; // declaring the variable here

binanceWS.onCombinedStream(
    [
     streams.ticker('BNBBTC')
    ],streamEvent => {
        switch (streamEvent.stream) {
            case streams.ticker('BNBBTC'):
            open = streamEvent.data.open; // assigning the value here
            break;
        }
    }
);

请注意,onCombinedStream 事件处理程序可能会执行多次,而 open = streamEvent.data.open 每次执行时都会分配一个新值。

为了防止这种情况发生,您可以检查该值是否已经被赋值(默认值为null)。

/*
 * Three equal signs for strict comparison.
 * Not necessary in this case,but it's a good practice.
 */
if (open === null) {
    open = streamEvent.data.open; // assigning the value here
}

代替上一个

open = streamEvent.data.open; // assigning the value here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?