setTimeout은 코드의 실행시간을 지정한 시간만큼 지연시킨다.
https://developer.mozilla.org/ko/docs/Web/API/setTimeout
https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout
clearTimeout을 이용해 settimeout을 즉시 종료시킬 수 있다
ex)
process.on('tick',function(n){ console.log('hi' +n});
process.emit('tick',777);
https://stickie.tistory.com/66
중첩함수에서 this 이용하는 방법
중첩함수에서는 this를 매개변수로 넘겨주고 안쪽의 중첩 함수에서 this를 매개변수로 받아서 사용할 수 있다.
process.on('CHANGE_REPORTING_INTERVAL', function (deviceId, interval, that) {
let sensor = that.running_sensors.find(x => x.id == deviceId);
if (sensor.powerStatus === "on" && interval >= 0 && interval <= 10000) {
sensor.reportingInterval = interval;
}
})
publish(eventObj) {
let sensor = this.running_sensors.find(x => x.id === eventObj.deviceId);
if (sensor.powerStatus === "on") {
process.emit(eventObj.actionId, eventObj.deviceId, eventObj.payload, this);
// if (eventObj.actionId === 'CHANGE_REPORTING_INTERVAL') {
// sensor.reportingInterval = eventObj.payload;
// }
}
}
readliny-sync를 이용하면 간단히 동기적 입력을 받을 수 있다.
다만 동기적으로 실행되면서 사용자 입력 전에 뒤의 코드를 실행할 수 없음에 주의하면서 사용하자.
https://www.npmjs.com/package/readline-sync
//npm i readline-sync
let readlineSync = require('readline-sync');
let deviceId = readlineSync.questionInt('id:');
let interval = readlineSync.questionInt('interval:');