$.ajax возвращает промис обьект, этот патерн делает код более читабельным.
Кроме того, если объект который приходит с удаленки сложной структуры, а нам из нее необходима только некая часть, мы можем руками создать обьект промиса и запонить его в колбеках аякса только нужными частями ответа, так мы можем написать максимально простой обработчик в промисе, но приэтом по закону мировоздания более сложными будут опции аякса:)
var promise = $.ajax('/url',{...});//опции без колбеков success&error
promise.done(function(args){});//callback on success
promise.fail(function(args){});//callback on error
Кроме того, если объект который приходит с удаленки сложной структуры, а нам из нее необходима только некая часть, мы можем руками создать обьект промиса и запонить его в колбеках аякса только нужными частями ответа, так мы можем написать максимально простой обработчик в промисе, но приэтом по закону мировоздания более сложными будут опции аякса:)
var promise = $.Deferred();
$.ajax('/weather', {
data: {q: location},
success: function(result){
promise.resolve(result.weather);
},
error: function(){
var error = 'invalid location';
promise.reject(error);
}
});
promise.done(function(args){});//callback on success
promise.fail(function(args){});//callback on error
ajax запросы заканчиваются в разное время, бывают моменты, когда процессинг ответов на разные запросы нужно произвести в одно и тоже время. Для этого ипользуются $.when & $.then
$.when(
Weather.today(loc),
City.find(loc)
).then(function(weatherResult, cityResult){
resultsDiv.append(cityResult);
resultsDiv.append(weatherResult);


Комментариев нет:
Отправить комментарий