我为所有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()。