如何解决在 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 举报,一经查实,本站将立刻删除。