我有一个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);
}
});
}
谢谢
答案 0 :(得分: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}`);
})
});