Приветствую сообщество.
Натолкнулся в одном из модулей на крайне интересную ситуацию. Изложу в кратком формате...
Вариант кода 1:
const timer = setInterval(() => {
periodicFunction();
}, 1000);
periodicFunction() {
...рабочий код функции...
};
Вариант кода 2:
periodicFunction();
periodicFunction() {
const timer = setTimeout(() => {
clearTimeout(timer);
periodicFunction();
}, 1000);
...рабочий код функции...
};
По сути они практически одинаковые - каждую секунду вызывается функция, выполняет некую работу (просто в асинхроне читает небольшой JSON-файл и парсит его в переменную).
Однако столкнулся с абсолютно непонятным для меня эффектом:
- вариант кода 1 (одноразовый вызов setInteval) грузит процессор на 10% локально и почти 40% на сервере
- вариант кода 2 (периодический вызов setTimeout) грузит процессор не более чем на 1% локально и 1.5% на сервере
Есть предположения причины такого странного поведения?