0

我知道我可以使用这样的回调:

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){

});
4

2 回答 2

1
$.post('handler.ashx', foo.mySuccess);

mySuccess这是在对象具有可访问功能的假设下。

例如:

var foo = (function(){

    return {
       mySuccess: function(data) {
          console.log(data)
       }
    };

})()
于 2012-11-19T15:29:01.010 回答
1

要维护您的 API(mySuccess使用回调调用函数,而不是定义它),您可以利用jQuery 的 promises/deferreds

var foo = (function() {
  function foo() {};
  foo.mySuccess = $.post("handler.ashx").promise().done;
  return foo;
})();

然后,将其用作foo.mySuccess,如您的示例所示:

foo.mySuccess(function(data) {
  // use data
});

请注意,这具有接受多个回调的良好副作用。

于 2012-11-19T15:36:33.507 回答