Я только изучаю JS, Подскажите пожалуйста, как выполнить setTimeout по очереди в JavaScript ?
У меня есть 4 функции которые выполняются по setTimeout и должны выполняться по очереди. Как это сделать ? Сейчас сначала выполняется та функция у которого секунды меньше остальных, что и логично.
И еще нужно сделать так, чтобы после выполнения последней функции сработал setInterval и весь процесс повторялся.
// Определяем функцию задержки в которую передаем время
const delay = (time) => {
return new Promise((resolve, reject) => setTimeout(resolve, time))
}
// вызываем
delay(100) // через 100 мс
.then(() => {
console.log('1 шаг');
return delay(200) // через 200 мс
})
.then(() => {
console.log('2й шаг');
return delay(150) // через 150 мс
})
.then(() => {
console.log('3й шаг');
})
// и так далее
При необходимости добавления новых функций просто наращиваем цепочку, добавляя новые .then(). Если задержка между ними нужна нулевая можно просто не возвращать delay(...), функции все равно будут выполнены последовательно. Такой подход гораздо удобнее чем использование callback hell, что является плохой практикой.
var timerId = setTimeout(function tick() {
alert('tick');
timerId = setTimeout(tick, 2000);
}, 2000);
Просто вызывайте свои функции рекурсивно через нужный интервал времени
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости