如何从异步数据中检查多个不等式?

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

我有一个node.js程序,它每5秒向服务器发送一个POST请求并获取我想要的数据的值并跟踪它。例如,如果它超过某个数字发送日志消息,如果它变得更高,则调用另一个功能(最终我想设置5个或更多阈值)。我的问题是,如果我想跟踪多个阈值,我该怎么办?

我现在的方式是有setInterval函数每隔5秒调用我的getValue(限制),其中限制是我想要的限制,如果限制被绕过另一个函数被调用,我不想多次调用getValue多余的。

const request = require('request');

function getValue(limit){
    var JSONobject = {'ContractCode':   contractCode};
    request({
      url: getUrl,
      method: "POST",
      json: true,
      headers: {
        'content-type': 'application/json; charset = UTF-8'
      },
      body: JSONobject
    }, function (error, response, body) {
        var obj = JSON.parse(JSON.stringify(response));
        if(obj.body.d.LastTradedPrice > limit){
        console.log('passed the point : %d', obj.body.d.LastTradedPrice);
        }

    });
}

谢谢

javascript node.js request
1个回答
0
投票

我不确定这个问题。我想说的是你想要以某种频率调用一个函数。从另一台服务器收集数据。另一个函数将调用它来获取最新数据。对于这种问题,您可以考虑使用rxjs。

这是简单的rxjs示例。

// Source.js

const Rx = require('rxjs');
const dataStream = new Rx.BehaviorSubject();
export.getLatestData = () => {
  return dataStream.asObservable();
};
const getData = (cb) => {
  setTimeout(() => {
    cb(Math.random());
  }, Math.random() * 10000)
};
setInterval(() => {
  getData((data) => {
    dataStream.next(data);
  })
});

//这里getLatestData将返回最新值

// Subscriber.js //在某些事件或电话上

const src = require('source');
route.get('/getData', () => {
  src.getLatestData().subscribe((latestData) => {
    console.log(`latestData:${latestData}`);
  })
});
© www.soinside.com 2019 - 2024. All rights reserved.