jQuery get wrapper不会触发失败

时间:2016-02-01 20:50:23

标签: javascript jquery ajax

我为所有jQuery ajax请求编写了一个小包装器,以便我可以对它们进行排队。我的问题是,一旦我将请求发送到我的队列中,发起者就失去了听取响应的能力(完成/失败/总是)。

为了解决这个问题,我写了一个像静态类

一样使用的包装器
function AjaxRequest(){
   this.queue = null;
}
AjaxRequest.queue = new MyQueue();

AjaxRequest.get = function(file){
  var defer = $.Deferred();
  var data = null;

  var ajax = function(){
    return $.get(file)
       .done(function(data){
          defer.resolve(data);
       })
       .fail(function(){
         defer.fail();
     });
  } 

  this.queue.enqueue(ajax);
  return defer.promise(data);
}

.done()和.always()触发器,但是当我失败时(通过坏数据)我没有收到任何错误。如果我解包并使用本机jQuery .get(),我确实会遇到这些错误,所以我在包装器中做错了。我没有正确地返回.fail()。

0 个答案:

没有答案