В последнее время я много экспериментировал с setInterval и clearInterval для создания собственных пользовательских эффектов, и одна из вещей, над которыми я работал, — это эффективный способ очистить интервал, оставаясь вне глобальной области видимости. Я пытаюсь улучшить читаемость и исследовать возможные повышения производительности, используя .promise() для вызова clearInterval() (ниже приведен пример того, что я пытаюсь сделать):
//caller is a collection of elements
function performEffect(caller) {
var interval = setInterval(function() { caller.next(); }, 500);
caller.promise().done(function() { interval = clearInterval(interval); });
}
До недавнего времени я устанавливал и очищал интервал с помощью встроенной функции (пример):
function performEffect(caller) {
var interval;
var count = 0;
var len = caller.length;
if (count >= len) {
interval = clearInterval(interval);
}
var tmr = function () {
interval = setInterval(function () { effectFunciton(count++); }, 100);
}
}
P.S. Прошу прощения за то, что не опубликовал оригинал - моя система управления версиями была повреждена. Кроме того, я знаю, что этот пример довольно глупый, так как я мог бы легко использовать цикл for или .each(), но это просто пример - у меня есть случаи, когда я не хочу использовать цикл.
Это мой первый пост, поэтому заранее извиняюсь, если сделаю что-то не так, как принято. Пожалуйста, дайте мне знать, если я могу что-то сделать, чтобы улучшить свои посты в будущем - я всегда открыт для конструктивной критики :)
Спасибо!