#javascript #jquery
#javascript #jquery
Вопрос:
мне было интересно, какая польза от установки setTimeout в переменную
scroll_timer = window.setTimeout(function () { ...
когда я могу просто использовать
window.setTimeout(function () { ...
и есть ли необходимость в clearTimeout на самом деле? строка 2
$window.scroll(function () {
window.clearTimeout(scroll_timer);
scroll_timer = window.setTimeout(function () { // use a timer for performance
if($window.scrollTop() <= top) // hide if at the top of the page
{
displayed = false;
$message.fadeOut(500);
}
else if(displayed == false) // show if scrolling down
{
displayed = true;
$message.stop(true, true).show().click(function () { $message.fadeOut(500); });
}
}, 100);
});
код из прокрутки вверх в jquery
Ответ №1:
Вы используете clearTimeout, когда хотите остановить таймер до вызова обратного вызова (т. Е. до истечения установленного промежутка времени)
var timer = setTimeout(callback, 1000);
clearTimeout(timer);
Обратный вызов здесь не вызывается.
Ответ №2:
Если вам в другом месте кода нужно проверить, запущен ли таймер, тогда вы бы проверили, имеет ли scroll_timer значение null или нет.
Ответ №3:
В данном примере эффект заключается в «сбросе» времени ожидания.
Поскольку событие прокрутки может запускаться много раз, в конечном итоге через десятую долю секунды будет отображаться множество повторяющихся сообщений. Если второе событие прокрутки вызывается до запуска первого, мы отменяем первое и устанавливаем новый тайм-аут для запуска через десятую долю секунды после последнего события прокрутки.
Ответ №4:
Это позволяет вам отменить тайм-аут с помощью clearTimeout, как в ответе Яна.
Это полезно, если у вас есть события, например, щелчок мыши, которые запускают таймер, чтобы вы не получали несколько вызовов. Мы используем это, чтобы остановить скроллер Twitter от обновления onmouseover.