Это то, что вы ищете? Увеличьте время для каждой итерации 1 секунда * некоторое количество
let i = 0;
loop = () => {
setTimeout(() => {
console.log("Count = " + i + " Time: " + 1000 * i);
i++;
if (i < 10) {
loop();
}
}, i * 1000)
};
loop();
Здесь есть REPL , вы можете нажать run
Объяснение: Попробуйте запустить этот код
for (var i = 1; i < 5; i++) {
setTimeout(() => console.log(i), 1000)
}
Мы ожидаем, что на выходе будет 1 2 3 4, но на самом деле это 5 5 5 5, потому что js двигатель времени выполнения не ожидает завершения установленного времени ожидания, а передает его на веб-API и он находится там в очереди, поэтому для l oop сначала выполняется i = 5, а в более поздний момент времени веб-API запускает функцию установленного времени ожидания. Подробнее об этом можно узнать здесь .