2012-09-05 10 views
10

にコールバック関数を作るためにどのように私は最後に別の関数を呼び出す関数を作成する方法を見つけることができません。のCoffeeScript

私はこのような何かを行うことができるようにしたい:

book.save (err) -> 
    MyFunc param1, param2, (callbackParam) -> 
    # some code using callbackParam 

MyFunc = (param1, param2) -> 
    # some other code that defines callbackParam 
    ?.call(callbackParam) 

呼ばれるように、どのようにそれがデータを受信しない持っていますか?それは次のようになります。そして、

MyFunc param1, param2, some_function 

答えて

17

あなたはとしてMyFuncを呼び出したい場合は

MyFunc = (param1, param2, callback) -> 
    # some code that defines callbackParam 
    callback? callbackParam 

MyFunc = (param1, param2, callback) -> 
    # some code that defines callbackParam 
    callback callbackParam 

をそして、あなたはcallbackオプションのようにしたい場合特定の商品をご希望の場合は@(AKA this)、その後、あなただけのJavaScriptのようcallまたはapplyを使用したい:

MyFunc = (param1, param2, callback) -> 
    # some code that defines callbackParam 
    callback?.call your_this_object, callbackParam 

(callbackParam) -> ...ものは、他のパラメータのような行為は、ルビーのように特別なブロックの扱いはありませんことをリテラルだけの機能(あなたのタグが示唆されRubyのブロックがあなたの混乱の原因です)。ここで

+0

ありがとう!それは簡単だった。 – zishe

4

は例を読み、理解しやすいクリーナー、です:

some_function = (callback) -> 
    param1 = "This is param1" 
    param2 = "This is param2" 
    callback(param1, param2) 

callback = (param1, param2) -> 
    console.log(param1) 
    console.log(param2) 

@tester = -> 
    some_function(callback) 
    "done" 

今、あなたのウェブサイトをロードし、コンソールに移動し、関数を呼び出す:

> tester() 
    This is param1 
    This is param2 
< "done"