如何在javascript中在一天中的特定时间频繁运行function()

如何在javascript中在一天中的特定时间频繁运行function(),javascript,timeout,Javascript,Timeout,我有一个函数,使用setTimeout()每3分钟24/7运行一次。问题在于,它从一个API中获取数据,该API的请求最多为一个月。我想尽可能频繁地运行它,但由于请求的浪费,在我睡觉的时候没有必要这样做。此外,如何仅在06:30:00和20:00:00之间运行我的脚本?您需要设置超时和日期() 例如 var now=newdate(); var millistal10=新日期(now.getFullYear(),now.getMonth(),now.getDate(),10,0,0,0)-now

我有一个函数,使用setTimeout()每3分钟24/7运行一次。问题在于,它从一个API中获取数据,该API的请求最多为一个月。我想尽可能频繁地运行它,但由于请求的浪费,在我睡觉的时候没有必要这样做。此外,如何仅在06:30:00和20:00:00之间运行我的脚本?

您需要设置超时日期() 例如

var now=newdate();
var millistal10=新日期(now.getFullYear(),now.getMonth(),now.getDate(),10,0,0,0)-now;
如果(毫秒10<0){
millisTill10+=86400000;//现在是上午10点以后,明天上午10点试试。
}
setTimeout(函数(){alert(“现在是上午10点!”)},millist10);

有关更多详细信息,请遵循

我已经测试并验证了以下代码。我的时间是晚上7:22,在这些时间安排下,它执行得非常好

//严格遵守今天的时间安排
//06:30:00和20:00:00
setInterval(函数(){
lowerDate=新日期();
较低的设定小时数(6);
最低设定分钟数(30);
下限设置秒(0);
upperDate=新日期();
设定时间(20);
upperDate.setMinutes(0);
upperDate.setSeconds(0);
todayDate=新日期();
如果(今天日期>下限日期&今天日期<上限日期)
console.log(“execute”);//仅在这两次之间执行

},3*60*1000)//每3分钟一次
谢谢!你能进一步解释一下它是如何工作的吗。我知道脚本要到上午10点才会开始,但是如果我想要不同的开始和结束时间,脚本将在什么时候停止,我该怎么做?@jaikl您可以通过更改以下内容中的值来设置开始时间:
new Date(年、月[、日期[、小时[、分钟[、秒[、毫秒])
@jaikl和to end to需要根据您想要再次启动它的时间更改millisTill10值。你也可以用上面的例子给我举个简单的例子吗?@jaikl看一下,他解释得很好。
var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now;
if (millisTill10 < 0) {
     millisTill10 += 86400000; // it's after 10am, try 10am tomorrow.
}
setTimeout(function(){alert("It's 10am!")}, millisTill10);