Лично я предпочитаю использовать setTimeout()
с интервалом для достижения того же эффекта
// Set a function to run every "interval" seconds a total of "x" times
var x = 10;
var interval = 1000;
for (var i = 0; i < x; i++) {
setTimeout(function () {
// Do Something
}, i * interval)
}
Нет необходимости в очистке с clearInterval()
Вы можете заключить его во избежание утечки переменных, и это выглядит довольно чисто:)
// Definition
function setIntervalLimited(callback, interval, x) {
for (var i = 0; i < x; i++) {
setTimeout(callback, i * interval);
}
}
// Usage
setIntervalLimited(function() {
console.log('hit'); // => hit...hit...etc (every second, stops after 10)
}, 1000, 10)