如何转发jQuery函数的成功和失败回调?

时间:2014-04-29 11:42:21

标签: javascript jquery design-patterns wrapper

我想包装一些jQuery函数(即ajax)有几个原因,例如参数的全局配置,更重要的是,能够轻松地交换它。

我的问题是,如何“转发”.done().fail()回调? (哪种设计模式负责jQuery的这种行为?)

$.ajax({
  url: "http://url.com",
})
  .done(function( data ) {
    // do something
  })
.fail(function() {
    alert( "error" );
  });

为了澄清,我希望能够做的是编写一个包含上述函数的函数,其行为如下:

myWrapper({config: "abc"}).done(function( data ) {
    // do something
});

2 个答案:

答案 0 :(得分:1)

如果你想这样做,你需要返回ajax电话......

function myWrapper(config) {
    return $.ajax({
        url: "http://url.com",
        data: config
    });
}

然后像你建议的那样打电话......

myWrapper({ config: "abc" }).done(function(data) {
    // call is done
});

我显然在上面的代码中做了一些假设,但它应该清楚地说明问题。如果没有,请问:)

答案 1 :(得分:1)

$.ajax函数会返回promise object,提供这些方法(donefailalways,最重要的then)。只需从myWrapper函数返回该对象。