Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.08.2017, 03:52
Новичок на форуме
Отправить личное сообщение для Terebonko Посмотреть профиль Найти все сообщения от Terebonko
 
Регистрация: 03.08.2017
Сообщений: 4

Таймер срабатывает раньше времени или вообще не срабатывает
Помогите, пожалуйста, разобраться, что нетак с таймером.

Браузер Chrome
При создании записи, создаётся заметка со следующими свойствами:

- номер заметки isbn
- статус заметки
- дата
- время

Вычесляется время в миллисекундах и передаётся таймеру setTimeout, по истечении времени изменяется статус заметки с Inprocess на Failed.

Не могу понять, почему для некоторых дат, таймер срабатывает сразу или не срабатывает вообще. Например, если срок равен 30 августа, то таймер сработает сразу, а не 30 августа, от настоящего времени. Так же он не срабатывает если задать прошедшую дату, например 1 июля, статус заметки будет в процессе, а не failed. Здесь пример кода https://repl.it/Jt3i/4
Ответить с цитированием
  #2 (permalink)  
Старый 03.08.2017, 07:13
Новичок на форуме
Отправить личное сообщение для Terebonko Посмотреть профиль Найти все сообщения от Terebonko
 
Регистрация: 03.08.2017
Сообщений: 4

Может я запутанно написал, можете уточнить у меня.
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2017, 09:33
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,793

В примере кода без ящика не разберешься...
Лучше приведите пример кода с setTimeout.
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2017, 10:24
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Terebonko,
Не вполне понятно, зачем эти навороты с датами:
var deadLineForCreate = {
	         "date": {
    					"years": years,
    					"months": months,
    					"days": days
	         },
  				 "time": {
  					  "hours": hours,
  					  "minutes": minutes,
  				 },
			     "deadlineInMilleseconds": 0

	  };

У обычной переменной типа Date есть все, что нужно...
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2017, 11:06
Новичок на форуме
Отправить личное сообщение для Terebonko Посмотреть профиль Найти все сообщения от Terebonko
 
Регистрация: 03.08.2017
Сообщений: 4

Спасибо ребята за замечания. Я решил проблему. Моя дата конвертированная в миллисекунды привышала лимит метода setTimeout, поэтому он срабатывал сразу после вызова.
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2017, 11:25
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Terebonko,
А какой смысл на клиенте запускать setTimeout на такой длительный срок? Что, пользователь откроет вашу страницу и будет сидеть и ждать конца августа?
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2017, 12:43
Новичок на форуме
Отправить личное сообщение для Terebonko Посмотреть профиль Найти все сообщения от Terebonko
 
Регистрация: 03.08.2017
Сообщений: 4

Конечно нет.

Пользователь создаёт заметку в которой есть дата, время и статус(в процессе или провалено). Дата и время конвертируются в миллисекунды и сохраняются в локальном хранилище браузера. Каждый раз, когда пользователь загружает приложение, от миллисекунд, хранящихся локальном хралище, вычитаются миллисекунды текущей даты и времени. Разность передаётся таймеру.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
alert срабатывает раньше Bird17 Events/DOM/Window 2 31.05.2017 19:47
Привязать таймер к серверному времени Vadya Общие вопросы Javascript 17 07.11.2016 17:27
Canvas. Как сделать или вообще нельзя? Вращение рандомизированно изменяемого объекта. Zemsky Общие вопросы Javascript 30 19.12.2013 19:44
Таймер обратного отчёта с выполнение по времени xakerd Элементы интерфейса 1 20.03.2013 00:10
Таймер вызывающий пхп функцию или как минимум посылающий какой-то параметр syegorius Общие вопросы Javascript 1 08.09.2010 17:12