@BakytShark

Как указать московское или серверное время в автоотправке запроса с помощью JS?

Всем привет!
В тот раз написал код на JS, который автоматически нажимает кнопку через 60 секунд с момента запуска.
Вот:
setTimeout(() => {
  document.querySelector("input.button.solid").click();
}, 60000);

Насколько я понял время здесь идет от того времени, который установлен у меня на компе, на котором работает браузер. Скажите, как можно вместо этого указать серверное время, или московское? Нужна просто сверхвысокая точность. Если для этого нужно переделать код, скажите, пожалуйста, как написать. Я не разбираюсь в программировании и все это написал, собирая инфу по кусочкам из разных форумов. Дальше никак не могу продвинуться.
Всем спасибо за помощь.
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
@ksnk
Что такое - сверхвысокая точность ? С точностью до секунды?
Как узнать оставшееся время в setTimeout?
Устанавливает таймер на "точный" интервал. Точность достигается тем, что функция вызывается раз в секунду (интервал настраивается) и корректирует оставшееся до событие время. Реальная точность зависит от нагрузки на компьютер в момент срабатывания таймера.
Для срабатывания в нужное время нужно указать это время в формате с таймзоной.
function setMyTimer(_t, interval){
        if(typeof(_t)=='function'){
            _t={main:_t}
        }
        _t.start=Date.now();
        _t.interval=_t.interval||interval;
        _t.log_interval=_t.log_interval || 1000;

        function log(){
            const diff=_t.interval - (Date.now() - _t.start);
            if(_t.log)_t.log(diff);
            if(diff>_t.log_interval)
                setTimeout(log,_t.log_interval);
            else {
                setTimeout(_t.main,diff<0?1:diff);
            }
        }

        setTimeout(log,_t.log_interval);
    }

    let AlertTime=new Date('2020-11-18T10:39:00+03:00') ;

    setMyTimer(()=>alert('Доставка!'), AlertTime.valueOf()-Date.now());
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Это делается так, ставится setInterval() для проверки текущего времени допустим каждый час, когда до назначенной даты остается несколько часов, меняем интервал проверки и уже проверяем дату каждую минуту. За несколько минут, начинаем уже проверять время каждую секунду и за несколько секунд до нужного времени, выкатываем setTimeout() с точным количеством миллисекунд для запуска вашей команды в точно указанное время.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы