get 함수로 API (node.js)를 만들고 싶습니다. 내가 사용하는 모듈은 쓰기를 지원하며 모든 수신 데이터는 내가 구독 할 수있는 이벤트에 의해 방출됩니다. 기본 시스템은 폴링을 기반으로합니다.콜백 함수와 이벤트 구동 형 디자인의 결합
하지만 (setInterval을 사용하여) 쓰는 폴러도 추가하고 싶습니다. rpm을 요청하기 위해 리스너를 추가 할 때마다 매초 RPM 정보를 얻습니다. vss에 대해 동시에 get을 호출하면 data.name과 type이 일치하지 않을 가능성이 있습니다. 그리고 그것은 지금 당장 나가 버린다.
기본적으로 else 블록을 어떻게 채울 수 있습니까? 그리고 모범 사례는 무엇입니까? 아니면 전체 디자인이 나쁜 습관입니까? 이 경우에는 지원을 받아야합니까?
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'이벤트가 더 많이 생성 될 수 있습니다. 얻을 수있는 적절한 가치를 얻는 방법?
더 이상 생각해 보면,이 dataReceived 이벤트가 폴러에 의해 트리거되는 동안 get 함수를 지원하면 안된다는 생각이 많이 듭니다.