У меня есть следующие функции:setInterval не очищен, функция продолжает получать казнены
function monitorClimate() {
var sensorReadingInterval;
function startClimateMonitoring(interval) {
sensorReadingInterval = setInterval(function() {
io.emit('sensorReading', {
temperature: sensor.getTemp() + 'C',
humidity: sensor.getHumidity() + '%'
});
}, interval);
console.log('Climate control started!');
}
function stopClimateMonitoring() {
clearInterval(sensorReadingInterval);
console.log('Climate control stopped!');
}
return {
start: startClimateMonitoring,
stop: stopClimateMonitoring
};
}
Я смотрю на кнопку для изменения состояния, как это:
button.watch(function(err, value) {
led.writeSync(value);
if (value == 1) {
monitorClimate().start(1000);
} else {
monitorClimate().stop();
}
});
Проблема заключается в том, что даже после вызова monitorClimate().stop()
, setInterval продолжает запускаться, поэтому SocketIO продолжает излучать событие sensorReading.
Что я здесь делаю неправильно?
Какой смысл вашего закрытия, если вы воссоздаете область действия, вызывая функцию каждый раз, когда используете свой API? Ваши разные вызовы просто не выполняются в одном и том же месте. Это разные функции, поэтому разные интервалы. –
вам нужна служба исполнителя определенно, код грязный. –
Спасибо, ребята! Я, очевидно, новичок, поэтому найти лучший образец часто бывает сложной задачей для меня. @RomanC можете ли вы указать мне некоторые материалы для чтения в службе исполнителей? Или, может быть, какой-то исходный код, реализующий его ... Простой поиск в Google привел меня к пакету NPM. Это то, о чем вы говорите? –