Обход элементов each + setTimeout
$(".announce-name:visible").each(function() { tthis = $(this); setTimeout(function() { console.log(tthis.text()); }, 5000); }); В итоге выводится сразу последний элемент в наборе. Как сделать паузу в 5 секунд при обходе списка элементов? Заранее спасибо! |
по тому что setTimeout это функция
т.е. то что ты пишешь в скобках это параметры этой функции они вычисляются в момент вызова данной функции вызов функции ни как не тормозит выполнения кода просто когда то в далеком будущем наступит событие timeout и будет выполнен первый параметр функции setTimeout (c) Попытаюсь объяснить совсем на пальцах небольшой пример «setTimeout ( a + b , 100 )» это вызов функции в котором первым параметром идет JS выражение и оно будет вычислено еще до вызова функции В случае «setTimeout ( function () {} , 100 )» первым параметром тоже идет выражение и оно так же будет вычислено (интерпретировано) до вызова setTimeout результатом вычисления данного выражения будет функция т.е. по пунктам: 1. вычисляется выражение JS (выражение возвращает безыменную функцию) 2. происходит вызов setTimeout 3. наступает событие timeout в котором происходит вызов безымянной функции (c) |
Часовой пояс GMT +3, время: 00:38. |