{
(function writer() {
document.querySelector(element).innerHTML = str.shift();
setTimeout(writer, time);
}())
}
Можно, перенести функцию write внутрь settineout, удали переменную value
Изменил, еще как-то можно?
Я бы ещё каррировал, если скрипт часто вызывается на одном и том же тексте или элементе
хах, setInterval по сути
Спасибо. Код не сократит, но поможет в его продолжении точно
в коле главное, чтобы его было читать просто
Я на это всегда делаю акцент по возможности (знаниям)
и в предыдущем подходе нужно тогда логику выхода из рекурссии писать если понадобится, а setInterval можно через clearInterval где угодно приостановить
Знаю. Как раз таки ее и писал. Не удобная она оказалась. А во втором методе все отлично.
Дык таймаут тоже можно чарез клир таймаут почистить) но, лучше сеттаймаут внутри колбэка вызвать, если задача долгая, то сетинтервал и сеттаймат с разными промежутками будет отрабатывать и в итоге 1й раз через 3 секунды, а 2й раз уже через 2 может запуститься (если функа будет секунду отрабатывать)
Почистить то можно, но создастся новый и еще, пока выход из рекурсии не приостановит
Не совсем понял, покажи как если написать, то из рекурсии не выйти? Просто я бы вместо iife вложенный таймаут бы сделал и все и если надо кильнуть ее то внешний таймаут в переменную и по достижении условия изнутри или где-то еще через переменную бы почистил
Ну в коде выше, самый первый, как cleartimeout остановит вызов функции
Поэтому и сказал про вложенные таймауты
Нет, текущий код остановимся, если внутри будет ошибка, к примеру элемента больше не будет. Setinyerval будет запускаться с ошибкой постоянно
Я про основную идею, что мешает сделать проверку
Обсуждают сегодня