Так как похоже, что у вас нет точного контроля при вызове update
, одним из вариантов будет установка логического значения на true
каждый раз getSeconds() === 0
(в противном случае установите false
), изатем запускать реальный код только в том случае, если установлен флаг false
и getSeconds() === 0
:
let hasRun = false;
// ...
async update() {
var date = new Date();
const secs = date.getSeconds();
if (secs !== 0) {
hasRun = false;
} else if (secs === 0 && hasRun === false) {
hasRun = true;
// your code
var newdata = await getData(1);
array.shift();
array.push(newdata);
}
}
Альтернатива, которая может потребовать меньше ресурсов из-за того, что не создает Date
s каждый кадрбудет иметь отдельную функцию, которая переключает логическое значение, с установленным setInterval
, который запускается каждые 60 секунд, без участия Date
:
let hasRun = false;
setInterval(() => hasRun = false, 60000);
async update() {
if (hasRun) return;
hasRun = true;
// your code
}
(конечно,Вы также можете попробовать setInterval(update, 60000)
, если это позволяет фреймворк)