gpt4 book ai didi

javascript - setInterval 持续时间较长时出现问题

转载 作者:搜寻专家 更新时间:2023-11-01 00:00:56 24 4
gpt4 key购买 nike

node.js 下的

setInterval 似乎不适用于 30 分钟或更长时间的延迟值。我不知道出了什么问题。将下面示例中传递给 setInterval 的延迟减少到仅 60 秒(通过删除一个 * 60)使其正确重复。

谁能指出我代码中的任何错误?

我尝试使用 https://www.npmjs.com/package/repeat但我每隔 30 分钟和 60 分钟就会遇到同样的问题。

这是一个代码示例:

function destroy() {
console.log('Destroy');
console.log('----------------------------------------------------------------------');

};

function post() {

console.log('Post');
console.log('----------------------------------------------------------------------');

setTimeout(destroy, 1000 * 60 * 30);
};


setTimeout(destroy, null);
setTimeout(post, 1000);
setInterval(post, 1000 * 60 * 60);

最佳答案

这里有一些长间隔的代码。它使用 60 秒的超时来检查长间隔。这应该可以代替 setInterval。您可以创建一个显示 longInterval.items 及其上次运行时间的页面。

function longInterval(fn, ms) {
var id = longInterval.counter++;
var now = new Date().getTime();
var item = {ms: ms, fn: fn, last: now};
longInterval.items[id] = item;
return id;
}

longInterval.items = {};
longInterval.counter = 0;

longInterval.run = function() {
var items = longInterval.items;
var now = new Date().getTime();
for (var k in items) {
var item = items[k];
if (now - item.last >= item.ms) {
item.last = now;
item.fn();
}
}

longInterval.timeout = setTimeout(function(){
longInterval.run();
}, 1000 * 60);
};

longInterval.clear = function(id) {
if (longInterval.items[id]) {
delete longInterval.items[id]
}
};
longInterval.run();

用法:

var myInterval = longInterval(function() {
console.log(new Date().getTime());
}, 1000 * 60);

关于javascript - setInterval 持续时间较长时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303283/

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