11

最後に別の関数を呼び出す関数の作り方がわかりません。

私はこのようなことをしたいです:

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

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

何を呼び出す必要があり、どのようにデータを受信しますか?

4

2 に答える 2

17

次のように電話をかけたい場合MyFunc

MyFunc param1, param2, some_function

次に、次のようになります。

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

そして、オプションにしたいcallback場合:

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

また、特定の@(AKA this)を提供する場合は、JavaScriptを使用するcallapply、JavaScriptで使用します。

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

これ(callbackParam) -> ...は、他のパラメーターと同じように機能する単なる関数リテラルであり、Rubyのような特別なブロック処理はありません(タグは、Rubyブロックが混乱の原因であることを示唆しています)。

于 2012-09-05T03:05:24.477 に答える
5

これは、よりクリーンで読みやすく、理解しやすい例です。

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"

次に、Webサイトをロードし、コンソールに移動して、関数を呼び出します。

> tester()
  This is param1
  This is param2
< "done"
于 2016-09-02T14:43:04.247 に答える