Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2018, 11:47
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Выполнение функции с промежутком времени.
Добрый день. Есть функция которая сравнивает время.
В функции если время превышает заданное, отправляется 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 секунд?
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2018, 12:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ну так если задано по времени, то достаточно проверить условие по нему и соответственно отправлять или нет запрос. Никаких флагов для этого не нужно. Зачем время прибавлять (в первой функции)?
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2018, 12:57
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Ну вот у меня функция каждые 10 секунд тащит это время с сервера, и передает в эту функцию, где происходит сравнение.

логика такая:

прошло 10 секунд

вызвали функцию смотрим время, ага условие сработало отправляем запрос (первое время меньше текущего времени, мы прибавляем к нему 15 минут потому что оно всегда меньше текущего времени, изначально)

прошло 10 секунд

условие снова выполнено, но запрос мы же уже отправляли, его не нужно отправлять (check == true оно не выполнится)

прошло 10 секунд ....(повторяется бесконечно)

прошло 30 минут после первой отправки

значение b1 не изменилось, после прибавки к нему 30 минут нужно снова отправить запрос

И вот тут у меня проблема как это сделать, на уме только оперировать check
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2018, 13:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ничего не понял. Есть периоды два условия более 30 или более 60 минут, и если условие выполняется, то запрос, так?
Ну а к чему арифметика с 15 минутами?
Каждые десять секунд опрашивается время, если запрос не выполнялся не разу, значит видимо запрашиваем и время запроса запоминаем. Затем это время сравниваем с текущим определяя более 30 или 60, если более, запрашиваем и сохраняем время запроса, и т.д.

PS. А зачем более 60, ведь до этой проверки так и не дойдет?

Последний раз редактировалось laimas, 01.11.2018 в 15:01.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение функции при переходе на вкладку oopros Общие вопросы Javascript 7 21.09.2016 21:48
Выполнение функции по нажатию scofield jQuery 3 01.11.2013 17:11
Остановить выполнение функции внутри другой функции ami_moor Общие вопросы Javascript 4 17.09.2013 14:02
Таймер обратного отчёта с выполнение по времени xakerd Элементы интерфейса 1 20.03.2013 00:10
Авто выполнение функции Itachi Общие вопросы Javascript 18 03.10.2008 16:48