我想用 get 函数制作一个 API(node.js)。我使用的模块支持写入,所有传入数据都由我也可以订阅的事件发出。底层系统基于轮询。
但我还想添加写入的轮询器(使用 setInterval)。当我添加一个请求 rpm 的侦听器时,我每秒都会获得 RPM 信息。当我同时为 vss 调用 get 时,可能 data.name 和 type 不匹配。这让我现在搞砸了。
所以基本上,我可以在 else 块中填写什么,最佳实践是什么?或者这整个设计是一种不好的做法?在这种情况下不应该支持 get 吗?
function get(type, callback) {
sp.once('dataReceived', function (data) {
if(data.name === type) {
switch (data.name) {
case "rpm":
callback(new RPMEvent(data.value));
break;
case "vss":
callback(new SpeedEvent(data.value));
break;
default:
console.log('Not supported yet.');
break;
}
} else {
console.log('Collision with poller and get. Not supported yet.');
//What to do here? I should addlistener again?
}
});
sp.requestValueByName(type);
}
由于不同变量(rpm/vss)上的轮询器,可以发出更多的“dataReceived”事件。如何获得正确的 get 值?
我想得越久,我就越认为我不应该支持 get 函数,而这个 dataReceived 事件也是由轮询器触发的。