Действительно ли возможно ограничить сумму времен, которые setInterval запустит в JavaScript?
Я сделал небольшой пакет, который делает это для NodeJS.
https://www.npmjs.com/package/count-interval
Это - общедоступная замена для setInterval (включая передачу параметров), но он берет еще count
параметр. Этот пример печатает сообщение один раз во второй, но только 3 раза.
const countInterval = require('./countInterval');
const timer = countInterval(() => {
console.log('fired!', new Date());
}, 1000, 3);
И для тех Вы предпочитающий setTimeout и любящий рекурсию вот являетесь моим предложением ;)
const setIntervalX = (fn, delay, times) => {
if(!times) return
setTimeout(() => {
fn()
setIntervalX(fn, delay, times-1)
}, delay)
}
Затем, как предложено можно назвать новое setInvervalX()
функция следующим образом:
// This will be repeated every for 5 times with 1 second intervals:
setIntervalX(function () {
// Your logic here
}, 1000, 5);