JavaScript. while не реагирует на setTimeout

Задумка:
Реализовать код, который будет увеличивать count в течении секунды
Тест производительности так сказать )

Проблема:
через while - бесконечный цикл
через рекурсию - ошибка Maximum call stack size exceeded

Через while:

let running = true
let count = 0

setTimeout(() => {
    running = false
    console.log(count)
}, 1000)

while (running) {
    count++
}

Через рекурсию:

let running = true
let count = 0


setTimeout(() => {
  running = false
  console.log(count)
}, 1000)

function doIt(argument) {
  if (running) {
    count++
    doIt()
  }
}

Ответы (1 шт):

Автор решения: lksmnd

Можно сделать цикл который будет сравнивать начальное и конечное время:

var count = 0;
var timestamp = new Date().getTime();

while(new Date().getTime() < timestamp+1000) {
    count++;
}

console.log(count);
→ Ссылка