@missbells

Как запустить функцию только после завершения setTimeout в цикле?

Подскажите, пожалуйста, как запустить выполнение функции только после того, как будет выполнен весь код в setTimeout, который запущен циклично?

Например:

var timer = 0;
for (let i = 0; i < 10; i++) {
    timer+=100;
    setTimeout(()=> {
       console.log(i);
    }, timer);
}
function end() {
  console.log("THE END");
}

end()


как сделать, чтоб функция end() выполнялась толкьо после завершения выведения в консоль значений i из цикла?
  • Вопрос задан
  • 582 просмотра
Решения вопроса 1
@Coder321
var timer = 0;
const callbacks = [];
for (let i = 0; i <= 10; i++) {
    timer += 100;
    callbacks.push(promisedTimeout(() => {
        console.log(i);
        return i;
    }, timer)) ;
}

function promisedTimeout(callback, timer) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            return resolve(callback());
        }, timer)
    });
}

function end() {
    Promise.all(callbacks)
        .then(res => console.log("THE END"))

}

end()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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