@bozuriciyu

Как бесконечно проходить по массиву с задержкой?

Есть массив со значениями (строки). Как проходить по всему массиву по кругу заново, с задержкой после каждой итерации? Я сделал так, но какие более изящные способы есть?

const array = ['one', 'two', 'three', 'four', 'five'];

function wait() {
  return new Promise(async (resolve, reject) => {
    setTimeout(() => {
      resolve();
    }, 500);
  });
}

async function loop() {
  for (const a of array) {
    console.log(a);
    await wait();
  }
  loop();
}

loop();
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Чем setInterval не устроил?
let index = -1;
setInterval(() => {
  index = (index + 1) % array.length;
  console.log(array[index]);
}, 500);

UPD. Вынесено из комментариев:

Показалось будет неудобно юзать в Вью компоненте. Мне надо при наведении мышки показывать по кругу картинки из массива и останавливать при убирании мышки.

Не вижу ничего неудобного:

<div
  @mouseenter="установитьИнтервал"
  @mouseleave="сброситьИнтервал"
>

methods: {
  установитьИнтервал() {
    this.interval = setInterval(() => { ... }, 666);
  },
  сброситьИнтервал() {
    clearInterval(this.interval);
  },
},
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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