@FlapJalc

Как получать элементы массива по очереди по кругу с задержкой?

Написал код который читает данные из массива, и выводит их по очереди с полутора секундной задержкой. Но после того как все данные считываются, мне нужно заново запускать этот цикл. Была идея поместить это всё в while (true), но это оказалось плохой идеей. Пытался гуглить, но меня постоянно кидало на статью по замыканиям. Тут и правда нужно использовать замыкания? Если да, то как

<p>Открыть <b class="slide-words">замок</b></p>

var keys = ['замок', 'машину', 'сейф'];

for (var i = 0; i < keys.length; i++) {
  slideTime(i)
}

function slideTime(j) {
  setTimeout(function() {
    var slideWords = document.querySelector('.slide-words');
    slideWords.textContent = keys[j];
  }, 1500 * j);
}
  • Вопрос задан
  • 490 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
function interval(arr, delay, callback) {
  let index = -1;

  return setInterval(() => {
    index = (index + 1) % arr.length;
    callback(arr[index]);
  }, delay);
}


const intervalId = interval(keys, 1500, function(text) {
  this.innerText = text;
}.bind(document.querySelector('.slide-words')));
Ответ написан
potapchino
@potapchino
через рекурсию можно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы