Выполнение блока кода в определенное время с помощью setInterval в JavaScript - PullRequest
0 голосов
/ 25 апреля 2020

Я хочу выполнить блок кода в определенное время. для этого я пишу функцию с именем get_current, которая получает текущее время и, используя setInterval и проверяя время с коротким интервалом, сравнивает его с моим желаемым временем. Если это условие выполнено, я выполняю console.log().

. Я проверил приведенный ниже код и убедился, что checkStart() выполняется в интервале, который определен в коде, но, к сожалению, , если условие никогда не выполняется. Кто-нибудь знает, почему?

var dateString;


function get_current(){

var mydate = new Date();
var mili_real = mydate.getMilliseconds();
var hour_real=mydate.getHours();
var minute_real=mydate.getMinutes();
var second_real=mydate.getSeconds();
     if(minute_real<10)minute_real="0"+minute_real;

     if(hour_real==0)hour_real="12";

     if(second_real<10) second_real="0"+second_real;
     if(mili_real<10)mili_real="00"+mili_real;
     else if(mili_real<100) mili_real="0"+mili_real;

     dateString=hour_real+""+minute_real+""+second_real+""+mili_real;
}

setInterval(checkStart,1);

function checkStart(){
    get_current();
    if(dateString==18581600){
    console.log("It's time to start");  
    }
}

1 Ответ

0 голосов
/ 25 апреля 2020

Попытка достичь точного времени с точностью до 1 миллисекунды не будет работать. Измените:

dateString==18581600

на:

dateString >= 18581600

Кроме того, запуск setInterval с задержкой в ​​1 миллисекунду не поддерживается. 4 мс - это минимум, но он может быть длиннее.

В случае сомнений обратитесь к справке MDN для setInterval () :

[T] браузер будет автоматически применять минимальное значение 4 мс для интервала.

Браузеры могут применять даже более строгие минимальные значения для интервала при некоторых обстоятельствах, хотя они не должны быть общими. Также обратите внимание, что фактическое количество времени, которое проходит между вызовами обратного вызова, может быть больше, чем заданная задержка;

...