Opened 7 years ago

Closed 7 years ago

#212 closed улучшение (fixed)

При возникновении ошибок API откладывать defer.resolve() до закрытия окна с сообщением об ошибке

Reported by: alx Owned by: alx
Priority: средний Milestone: 1 очередь
Component: web-интерфейс (sw) Keywords:
Cc:

Description

Сейчас запросы chat посылаются серверу каждые 10 секунд (если не открыта вкладка "Чат"). Когда сервер возвращает ошибку, появляется окно с сообщением и кнопкой "закрыть". Однако в качестве времени последнего опроса запоминается время отправки запроса, а не время получения ответа и, тем более не время закрытия окна с ошибкой. Это может приводить к странным эффектам, когда пользователь закрывает окно с ошибкой и тут же получает новое, так как таймер нового запроса шел, пока окно было открыто.

Предлагается включать время отображения окна с сообщением об ошибке в общее время транзакции, и, если сервер вернул ошибку, выполнять defer.resolve() не в момент создания окна с сообщением, а в момент его закрытия. Таким образом вызывающий request() сможет устанавливать обработчики методами .done() и .always(), которые сработают не при получении ответа, а при закрытии окна.

Change History (2)

comment:1 by alx, 7 years ago

In 1528/sw:

В веб-интерфейсе функция request при получении от сервера ответа с сообщением об ошибке
теперь выполняет deferred.reject() не в момент получения ответа и создания окна
с сообщением об ошибке, а в момент закрытия окна пользователем.

Кроме этого, перед deferred.reject() или deferred.resolve() вызывается deferred.notify(100),
чем сигнализируется завершение собственно запроса к серверу. Это позволяет использовать
конструкцию .progress(function(x){x < 100 || ctrl.remove();}) для убирания спиннера.

See #211, #212.

comment:2 by alx, 7 years ago

Resolution: fixed
Status: newclosed

In 1535/sw:

Время последнего опроса состояния чата обновляется при полном завершении опроса сервера
(включая возможный вывод сообщения об ошибке). Closes #212.

Note: See TracTickets for help on using tickets.