У меня есть $.ajax
обещание и хочу проверить, содержит ли мой (синтаксически правильный) ответ ошибку, вызывая отклоненный статус в этом случай.
Я работал с моей собственной библиотекой обещаний, которая легко справляется с такими задачами. Мне не очень нравится jQuery Promise (cache) с объектом Deferred
и, возможно, что-то упустил, потому что я редко его использую. Я думаю, что путь - просто использовать .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 решает это.