我想包装一些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
});
答案 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,提供这些方法(done
,fail
,always
,最重要的then
)。只需从myWrapper
函数返回该对象。