2011-02-24 6 views

答えて

6

MyClass.cb = callback; 

以降はそれを呼び出す:あなたはまた、あなたのクラスの

メンバーとして登録することができ。この場合は、callback(response)とします。

var MyClass = { 

myMethod : function(params, callback) { 

// do some stuff 

FB.method: { 'sth.', 
    'perms': 'sth.' 
    'display': 'iframe' 
    }, 
    function(response) { 

     if (response.perms != null) { 
      // How to pass response to callback ? 
      // Easy as: 
      callback(response); 
     } else { 
      // How to pass response to callback ? 
      // Again: 
      callback(response); 
     } 
    }); 
} 

} 
+0

だから簡単です。ありがとう – fabian

+0

問題ありません。 :)それを答えとしてマークしてください。 –

-3
 

var callback = function() { 

}; 

のこの部分へのコールバックを実装する方法を疑問に思いました関数。

callback(response) 
+0

は、それは 'コールバック(応答)'と思いませんか? – mellamokb

+0

Sry、私はそれを得ない? – fabian

+2

これは質問には関係していないようです。 –

1

:-)コードそれ厥

MyClass.myMethod("sth.", myCallback); 
function myCallback() { // do sth }; 

var MyClass = { 

myMethod : function(params, callback) { 

    // do some stuff 

    FB.method: 'sth.', 
     'perms': 'sth.' 
     'display': 'iframe' 
     }, 
     function(response) { 

      if (response.perms != null) { 
       // How to pass response to callback ? 
      } else { 
       // How to pass response to callback ? 
      } 
     }); 
} 

}

-1

今、関数への参照があります。ちょうどそれを呼び出す:

callback(response.perms); 
1

私は、あなたは、単にそこにcallback(response.perms)を呼び出すことができると思います。あなたがしなければならないのは、通常の方法でコールバック関数を呼び出すです

MyClass.cb(response.perms) 
0
callback.call(null, response); 
1

あなたは近いです...ただ、コールバックを使用します。この例では、クロージャを作成できます。達成する

var MyClass = { 

myMethod : function(params, callback) { 

    // do some stuff 

    FB.method: 'sth.', 
     'perms': 'sth.' 
     'display': 'iframe' 
     }, 
     function(response) { 

      if (response.perms != null) { 
       callback(response); 
      } else { 
       // response is null, but you can pass it the same as you did above - if you want to. Probably better to have a generic failure handler 
       ajaxFailHandler(); 
      } 
     }); 
} 
0
MyClass.myMethod("sth.", myCallback); 
var myCallback = function myCallback() { // do sth } 

var MyClass = { 

myMethod : function(params, callback) { 

    // do some stuff 

    FB.method: 'sth.', 
     'perms': 'sth.' 
     'display': 'iframe' 
     }, 
     function(response) { 

      if (response.perms != null) { 
       callback(); 
      } else { 
       callback(); 
      } 
     }); 
} 

} 
+1

これを投稿した理由はわかりませんが、あなたはコールバックに 'response'変数を渡していません。 'コールバック(レスポンス);は他の答えに示されているように、そのトリックを行います。 –

13

三つの方法 "callbackに応答を渡す方法//?" :

  1. callback(response, otherArg1, otherArg2);
  2. callback.call(this, response, otherArg1, otherArg2);
  3. callback.apply(this, [response, otherArg1, otherArg2]);

1は、最も単純である2はあなたのcallbackfunction内部の 'this' 変数の値を制御したい場合にあり、3はに似ています2であるが、可変数の引数をcallbackに渡すことができます。ここ

はまともなリファレンスです:http://odetocode.com/Blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx

+0

非常に完全な答え...素敵! –

関連する問題