Прерывание jQuery getJSON XMLHttpRequest

Я с нетерпением жду дня, моя команда начинает изучать решения ORM. До того дня мы - чистый магазин Набора данных/Хранимой процедуры и позволяем мне сказать Вам, что это не все булочки и соус, являющийся "чистым".

Во-первых, новый Linq к SQL работает близко к тому из сохраненных procs и средств чтения данных. Мы используем наборы данных везде, таким образом, производительность улучшилась бы. Пока неплохо для ORM.

, Во-вторых, сохраненные procs обладают дополнительным преимуществом того, чтобы быть выпущенным отдельный из кода, но у них также есть вред того, чтобы быть выпущенным отдельный из кода. Притворитесь в течение секунды, что у Вас есть база данных больше чем с 5 системами, соединяющимися с ним и больше чем 10 людьми, работающими над ним. Теперь думайте об управлении всеми теми изменениями хранимой процедуры и зависимостями, особенно когда будет общая кодовая база. Это - кошмар...

В-третьих, трудно отладить сохраненный procs. Они часто приводят к ошибочному поведению для всевозможных причин. Это не должно говорить, что то же не могло никакой результат динамического sql быть сгенерированным ORM, но один, меньшей проблемой является та меньше проблемы. Никакие проблемы полномочий (хотя главным образом разрешено в SQL 2005), больше никакой многоступенчатой разработки. Запись запроса, тестирование запроса, развертывание запроса, связь его в код, тестирование кода, развертывание кода. Запрос является частью кода, и я рассматриваю это как хорошую вещь.

Четвертый, Вы можете все еще используемые хранимые процедуры. Выполнение некоторых отчетов, которые занимают много времени? Сохраненные procs являются лучшим решением. Почему? Планы выполнения запросов могут быть оптимизированы механизмом базы данных. Я не симулирую понимать все работы базы данных, но я действительно знаю, что существуют некоторые ограничения к оптимизации динамического sql в настоящее время, и это - компромисс, который мы делаем при движении с ORM. Однако сохраненные procs не исключены при использовании решения ORM.

Действительно самая большая причина я вижу, что люди избегают, чтобы ORM был то, что у них просто нет опыта с одним. Будет очевидная кривая обучения и этап незнания. Однако, если это собирается улучшить производительность разработки и едва препятствовать (или в моем случае улучшаются), производительность. Это - компромисс, который стоит сделать.

12
задан Drew Gaynor 2 November 2015 в 01:47
поделиться

4 ответа

Прерывание вызова сбрасывает объект; обработчик события onreadystatechange удален, а readyState изменено на 0 (неинициализировано).

Я не думаю, что он отменяет сам запрос, он просто игнорирует любой ответ (манипулирование обработчиком события) - но я еще не пробовал его .

, но это определенно позволит вам повторно использовать объект - независимо от того, есть ли в браузере какой-то поток, работающий со старым запросом.

2
ответ дан 2 December 2019 в 23:20
поделиться

вы можете взглянуть на JSONP-Plugin С помощью этого плагина у вас есть возможность вручную прервать запрос. Также обратите внимание на «предупреждение» в технической библиотеке IBM:

Прежде всего, нет обработки ошибок для вызовов JSONP. Если динамическая вставка скрипта работает, вас вызывают; в противном случае ничего не происходит. Он просто тихо терпит неудачу. Например, вы не можете поймать ошибку 404 с сервера. Вы также не можете отменить или перезапустить запрос.

2
ответ дан 2 December 2019 в 23:20
поделиться

взгляните на jquery AJAX Queue / Cache / Abort / Block Manager , возможно, это поможет вам предотвратить текущую ситуацию.

0
ответ дан 2 December 2019 в 23:20
поделиться

Еще одна замечательная статья о том, как справиться с этим, находится здесь: http://www.bennadel.com/blog/1500-Catching-Timeout-Errors -With-jQuery-Powered-AJAX.htm .

Я просто преобразовал свой запрос .getJSON в .ajax и добавил тайм-аут / обработку ошибок.

Спасибо!

2
ответ дан 2 December 2019 в 23:20
поделиться
Другие вопросы по тегам:

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