zishe zishe - 1 year ago 86
CoffeeScript Question

How to make callback function in Coffeescript

I can't find out how to make a function that calls another function at the end.

I want to be able to do something like this:

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

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


What has to be called and how does it receive the data?

Answer Source

If you want to call MyFunc as:

MyFunc param1, param2, some_function

Then it should look like this:

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

And if you want to make the callback optional:

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

And if you want to supply a specific @ (AKA this), then you'd use call or apply just like in JavaScript:

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

The (callbackParam) -> ... stuff is just a function literal that acts like any other parameter, there's no special block handling like in Ruby (your tags suggest that Ruby blocks are the source of your confusion).

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download