понедельник, 2 июня 2014 г.

jQuery Promises

$.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);

Комментариев нет:

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