我知道我可以使用这样的回调:
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){
});
答案 0 :(得分:1)
$.post('handler.ashx', foo.mySuccess);
假设对象具有可访问的mySuccess
函数。
例如:
var foo = (function(){
return {
mySuccess: function(data) {
console.log(data)
}
};
})()
答案 1 :(得分:1)
要维护您的API(使用回调调用mySuccess
函数,而不是定义它),您可以利用jQuery's promises/deferreds:
var foo = (function() {
function foo() {};
foo.mySuccess = $.post("handler.ashx").promise().done;
return foo;
})();
然后,将其用作foo.mySuccess
,如您的示例所示:
foo.mySuccess(function(data) {
// use data
});
请注意,这有很好的副作用,可以接受多个回调。