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