我知道我可以使用这样的回调:
function foo(mySuccess) {
$.post('handler.ashx', mySuccess);
}
但是在以下情况下我会怎么做:
function foo(){ }
$.post('handler.ashx', function(){
foo.mySuccess = function(data); //this wont work, but you get the idea
});
然后使用以下方法调用它:
foo.mySuccess(function(data){
});
$.post('handler.ashx', foo.mySuccess);
这是在假设对象具有可访问的mySuccess
函数的情况下进行的。
例如:
var foo = (function(){
return {
mySuccess: function(data) {
console.log(data)
}
};
})()
为了维护你的API(用回调调用mySuccess
函数,而不是定义它),你可以利用jQuery的承诺/延期:
var foo = (function() {
function foo() {};
foo.mySuccess = $.post("handler.ashx").promise().done;
return foo;
})();
然后,将其用作foo.mySuccess
,如您的示例所示:
foo.mySuccess(function(data) {
// use data
});
请注意,这有一个很好的副作用,即接受多个回调。