@ArtJH

Правильно ли так работать с setTimeout?

У меня есть ряд событий и таймеров
1) После загрузки экрана через 1 сек
2) После этого другое действие
3) После другое
4) Другое
И так может быть раз 20-30

Важна последовательность, чтоб действие не начиналась пока не закончится прошлое

На данный момент у меня код так.
И я знаю что мой способ отнюдь не лучший вариант. Так как у меня не регулируется закончилось действие или нет по факту, а регулирует таймер по времени.
Мне это нужно для работы с анимацией. После того как анимация закончилась, у меня срабатывает новый таймер с анимацией

Подскажите куда копать?
И как вообще лучше и оптимальней работать с таймерами когда их очень много
window.setTimeout(function () {
        // какое-нибудь действие
    }, 500);

    window.setTimeout(function (){
       // какое-нибудь действие
    },4000);

    window.setTimeout(function (){
      // какое-нибудь действие
    },5000);

  window.setTimeout(function (){
      // какое-нибудь действие
    },7000);
  • Вопрос задан
  • 165 просмотров
Решения вопроса 2
Может быть так:
Ответ написан
Alexandre888
@Alexandre888
Javascript-разработчик
Подскажите куда копать?

for, break, метки, async/await
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Mr_Sergo
@Mr_Sergo
по окончании одной анимации можно запускать следующую по animationend https://developer.mozilla.org/en-US/docs/Web/API/H... или transitionend https://developer.mozilla.org/ru/docs/Web/Events/t...

демка https://codepen.io/Mr_Sergo/pen/KKzqPyw
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Простая очередь на промисах:



Кроме того, есть готовые библиотеки для организации очередей/стеков

Но вероятно вам не нужен сам таймаут, а нужно просто дождаться выполнения какой-то задачи.
Поэтому его уберем, и используем просто как имитацию задержки
https://jsfiddle.net/DelphinPRO/pfL9znoh/2/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
20 нояб. 2024, в 19:18
30000 руб./за проект
20 нояб. 2024, в 19:13
1000 руб./за проект
20 нояб. 2024, в 18:14
5000 руб./за проект