Хотя эту задачу можно решить с помощью обещаний, реактивных потоков и других интересных инструментов (эй, никто еще не предлагал использовать рабочих!), Ее также можно решить с помощью небольшой арифметики.
Так что вам нужны тайм-аутыв последовательности: 1 с, предыдущий + 2 с, предыдущий + 3 с и т. д. Эта последовательность: 1, 3, 6, 10, 15 ... и ее формула a[n] = n * (n + 1) / 2
. Зная, что ...
let n = 6;
console.log(new Date().getSeconds());
for (let i = 1; i < n; i++) {
setTimeout(function timer() {
console.log(new Date().getSeconds());
}, 1000 * i * (i + 1) / 2);
}