Я заметил в нескольких библиотеках JavaScript, которые используют setInterval
, что библиотека свяжет прослушиватель событий с событием window
unload
, чтобы очистить все созданные интервалы, используя clearInterval
.
Одним из примеров является History.js, который сохраняет Список интервалов, которые должны быть удалены при выгрузке документа.
Отрывок:
// ====================================================================
// Interval record
/**
* History.intervalList
* List of intervals set, to be cleared when document is unloaded.
*/
History.intervalList = [];
/**
* History.clearAllIntervals
* Clears all setInterval instances.
*/
History.clearAllIntervals = function(){
var i, il = History.intervalList;
if (typeof il !== "undefined" && il !== null) {
for (i = 0; i < il.length; i++) {
clearInterval(il[i]);
}
History.intervalList = null;
}
};
Слушатель событий, который вызывает эту функцию в событии unload
, добавляется здесь.
Отрывок:
/**
* Clear Intervals on exit to prevent memory leaks
*/
History.Adapter.bind(window,"unload",History.clearAllIntervals);
Итак, мой вопрос: почему некоторые авторы JavaScript делают это? Кажется, что эти интервалы будут очищены автоматически, когда браузер покинет страницу (я никогда не видел, чтобы это делалось иначе). Есть ли преимущество в этом? Это компенсирует ошибку браузера? Если да, то какая ошибка и какие браузеры это влияет?