У меня есть функция, которая работает каждые 3 минуты 24/7 с помощью setTimeout(). Проблема заключается в том, что он извлекает данные из API, у которых максимум запросов в месяц. Я хочу запускать его так часто, как может, но это необязательно делать, когда я сплю из-за пустой траты запросов. Как может, кроме того, запустить только мой сценарий, например, с 06:30:00 до 20:00:00?Как запустить функцию() часто в определенное время суток в javascript
0
A
ответ
1
Вы нужны как SetTimeout и Date() для достижения этой цели: для, например,
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);
Для получения более подробной информации, пожалуйста, следуйте this
0
Я испытал и проверил следующий код. Шахта - 7:22 вечера, которая подпадает под эти тайминги, и она выполняется очень хорошо.
// get todays strict timings
// 06:30:00 and 20:00:00
setInterval(function() {
lowerDate = new Date();
lowerDate.setHours(6);
lowerDate.setMinutes(30);
lowerDate.setSeconds(0);
upperDate = new Date();
upperDate.setHours(20);
upperDate.setMinutes(0);
upperDate.setSeconds(0);
todayDate = new Date();
if (todayDate > lowerDate && todayDate < upperDate)
console.log("execute"); // execute only if in between these times
}, 3 * 60 * 1000) //Every 3 minutes
Спасибо! можете ли вы еще больше объяснить, как это работает. Я понимаю, что сценарий не начнется, пока не будет 10 утра, но в какое время он остановится и как я это сделаю, если захочу разное время начала и окончания? – jaikl
@jaikl Вы можете установить время начала, изменив значения в [Дата()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date): 'new Дата (год) , month [, date [, hours [, minutes [, seconds [, milliseconds]]]]]); ' – emme
@jaikl И для завершения нужно изменить значение ** millisTill10 ** в зависимости от времени, которое вы хотите запустить еще раз. Также вы можете использовать [setInterval()] (https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval) – emme