devlights
5/1/2013 - 8:28 AM

jqueryのDeferredの自分用サンプル.

jqueryのDeferredの自分用サンプル.

$.ajaxSetup({
  dataType: "json",
  type: "POST",
  cache: false
});

var DeferSample = {
  var self = this;
  
  getData: function() {
    var $defer = $.Deferred();
    
    $.ajax({ url: "/api/books", data: {}, beforeSend: self.clear })
     .done($defer.resolve)
     .fail($defer.reject);
    
    return $defer.promiss();
  },
  
  setData: function(data) {
    var $elem = $("js-data-list");
    
    $elem.hide();
    
    (function() {
      $.each(data, function(i, item) {
        $("<li/>").text(_.str.springf("%s : %s", i, item))
                  .appendTo($elem);
      });
    }());
    
    $elem.fadeIn("slow");
  },
  
  clear: function() {
    $("js-data-list").empty();
  },
  
  showError: function(jqXhr, status, ex) {
    alert(ex);
  },
  
  populate: function() {
    getData().then(setData, showError);
  }
};

$(function() {
  DeferSample.populate();
});