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

API を維持するには (定義するのではなく、コールバックを使用して関数を呼び出す)、 jQuery の promises/deferreds をmySuccess利用できます。

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 に答える
1
$.post('handler.ashx', foo.mySuccess);

これは、オブジェクトにアクセス可能な機能があることを前提としていますmySuccess

例えば:

var foo = (function(){

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

})()
于 2012-11-19T15:29:01.010 に答える