Выполнение функции с промежутком времени.
Добрый день. Есть функция которая сравнивает время.
В функции если время превышает заданное, отправляется post запрос на сервер. Вот функция, она обновляется с интервалом в 10 секунд: var check = true; function downtime (d1, d2){ //d1 это время, например 2018-11-01 11:41:53 //d2 это текущее время сервера d1 = new Date(Date.parse(d1)); //преобразуем строку d2 = new Date(Date.parse(d2)).getTime(); var min15 = d1.setSeconds(d1.getSeconds() + 900); //прибавляем к времени 15 минут //check становится false во время другого условия if(min15 <= d2 && check == false){ check = true; $.post( "index.php"); } } Сам вопрос, как отправлять post запрос только по одному разу если время так же превышает 30 минут и 60 минут. Например вот так, но это я так понимаю не правильно обращаться так к check: var check = true; function downtime (d1, d2){ d1 = new Date(Date.parse(d1)); d2 = new Date(Date.parse(d2)).getTime(); var min15 = d1.setSeconds(d1.getSeconds() + 900); var min30 = d1.setSeconds(d1.getSeconds() + 1800); var min60 = d1.setSeconds(d1.getSeconds() + 3600); if(min15 <= d2 && min30 >= d2 check == false){ check = true; $.post( "index.php"); } if(min30 <= d2 && min60 >= d2 check == true){ check = false; $.post( "index.php"); } if(min60 <= d2 && check == false){ check = true; $.post( "index.php"); } } Подскажите как правильно сделать отправку post запроса если эта функция обновляется раз в 10 секунд?:-? |
Ну так если задано по времени, то достаточно проверить условие по нему и соответственно отправлять или нет запрос. Никаких флагов для этого не нужно. Зачем время прибавлять (в первой функции)?
|
Ну вот у меня функция каждые 10 секунд тащит это время с сервера, и передает в эту функцию, где происходит сравнение.
логика такая: прошло 10 секунд вызвали функцию смотрим время, ага условие сработало отправляем запрос (первое время меньше текущего времени, мы прибавляем к нему 15 минут потому что оно всегда меньше текущего времени, изначально) прошло 10 секунд условие снова выполнено, но запрос мы же уже отправляли, его не нужно отправлять (check == true оно не выполнится) прошло 10 секунд ....(повторяется бесконечно) прошло 30 минут после первой отправки значение b1 не изменилось, после прибавки к нему 30 минут нужно снова отправить запрос И вот тут у меня проблема как это сделать, на уме только оперировать check :-? |
Ничего не понял. Есть периоды два условия более 30 или более 60 минут, и если условие выполняется, то запрос, так?
Ну а к чему арифметика с 15 минутами? Каждые десять секунд опрашивается время, если запрос не выполнялся не разу, значит видимо запрашиваем и время запроса запоминаем. Затем это время сравниваем с текущим определяя более 30 или 60, если более, запрашиваем и сохраняем время запроса, и т.д. PS. А зачем более 60, ведь до этой проверки так и не дойдет? |
Часовой пояс GMT +3, время: 04:31. |