У меня есть обещание $.ajax
и вы хотите проверить, содержит ли мой (синтаксически корректный) ответ ошибку, вызывая отклоненный статус в этом случае.Выбрасывание ошибки в отложенном объекте jQuery
Я работал с моей собственной библиотекой обещаний, которая легко справляется с такими задачами. Мне не очень нравится реализация jQuery's Promise (cache) с его Deferred
object и, возможно, что-то упустил из виду, потому что я редко использую его. Я думаю, что путь только с помощью .then()
, который кажется довольно сложным:
return $.ajax(...).then(function success(response) {
var problem = hasError(response);
if (problem) {
var error = new $.Deferred;
error.reject(problem);
return error;
} else
return response;
});
Это должно вернуть обещание, которое отвергается в случае сетевых ошибок или проблем с ответом. Но возвращается ли отвергнутый отложенный вариант [только | лучший | самый короткий] путь?
Я также хотел бы узнать, как справиться с такими «обработчиками ответов об ошибках» в вариантах ajax, я не смог найти хорошую документацию о них.
Отказ от ответственности: Нет, я не могу изменить ответы сервера. Метод обнаружения проблемы является синхронным. Я не хочу использовать другие библиотеки, меня особенно интересует способ, которым jQuery решает это.
ОК, с '.then()' Я имел в виду вещь, что '.pipe()' делает в jQuery :-( – Bergi
от JQuery 1.8 pipe === then – Plynx
Да, к счастью, они получили хотя бы то, что исправлено. – Bergi