Вы можете создать Timer class
, чтобы помочь вам. Создайте instance
один раз и update
на каждом request
. Вы можете передать функцию callback
для выполнения перехода на другое время.
Таймер:
class Timer {
constructor(time, cb) {
this.time = time;
this.cb = cb;
}
update() {
clearTimeout(this.timeId);
this.start();
}
start() {
this.timeId = setTimeout(() => {
this.cb();
}, this.time);
}
}
Начало инициализации:
const timer = new Timer(100, function print() { // Chnage time to 10000ms
console.log(new Date());
});
timer.start();
Обновление / перепланировка:
timer.update();
class Timer {
constructor(time, cb) {
this.time = time;
this.cb = cb;
}
update() {
clearTimeout(this.timeId);
this.start();
}
start() {
this.timeId = setTimeout(() => {
this.cb();
}, this.time);
}
}
const delay = (t) =>
new Promise((r) => {
setTimeout(r, t);
});
async function main() {
const timer = new Timer(100, function print() { // Chnage time to 10000ms
console.log(new Date());
});
timer.start();
await delay(200)
timer.update();
await delay(50)
timer.update();
await delay(50)
}
main()