gpt4 book ai didi

javascript - NodeJS 中可暂停的计时器?

转载 作者:行者123 更新时间:2023-12-03 10:33:54 24 4
gpt4 key购买 nike

我该如何创建一个可以使用 NodeJS 暂停的计时器?

我正在考虑使用 setInterval/setTimeout 但不确定它是否会按照我想要的方式工作? (因为没有“暂停”)

基本上,我希望每 5 分钟(例如)重新出现一次计时器,但如果我执行某个操作,我希望它暂停,然后在执行另一个操作时取消暂停。

最佳答案

您不会在node.js 中暂停计时器。相反,您启动和停止计时器。

如果您想以与继续运行时剩余的时间相同的剩余时间重新启动它,那么您只需跟踪该时间即可。

这是一个可以让您启动和停止计时器的小对象的想法:

var Timer = function(t, fn, go) {
var timer, tRemaining, tStarted;

if (!t || !fn) {
throw new Error("Must specify time and callback function");
}

tRemaining = t;

if (go) {
this.start();
}

this.start = function() {
if (!timer) {
tStarted = new Date().getTime();
timer = setTimeout(fn, tRemaining);
}
};

this.pause = function() {
if (timer) {
clearTimeout(timer);
timer = null;
var now = new Date().getTime();
tRemaining -= now - tStarted;
}
}
}

// usage
var t = new Timer(5000, function() {
// this will be called when the timer is done
});

t.start();

// some time later
t.pause();

// some time later
t.start();

关于javascript - NodeJS 中可暂停的计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29090334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com