zis*_*she 11 callback coffeescript
我无法找到如何创建一个最后调用另一个函数的函数.
我希望能够做到这样的事情:
book.save (err) ->
MyFunc param1, param2, (callbackParam) ->
# some code using callbackParam
MyFunc = (param1, param2) ->
# some other code that defines callbackParam
?.call(callbackParam)
Run Code Online (Sandbox Code Playgroud)
需要调用什么以及如何接收数据?
mu *_*ort 17
如果你想打电话给MyFunc:
MyFunc param1, param2, some_function
Run Code Online (Sandbox Code Playgroud)
然后它应该是这样的:
MyFunc = (param1, param2, callback) ->
# some code that defines callbackParam
callback callbackParam
Run Code Online (Sandbox Code Playgroud)
如果你想做callback可选的:
MyFunc = (param1, param2, callback) ->
# some code that defines callbackParam
callback? callbackParam
Run Code Online (Sandbox Code Playgroud)
如果你想提供一个特定的@(AKA this),那么你在JavaScript中使用call或者apply就像:
MyFunc = (param1, param2, callback) ->
# some code that defines callbackParam
callback?.call your_this_object, callbackParam
Run Code Online (Sandbox Code Playgroud)
这些(callbackParam) -> ...东西只是一个函数文字,就像任何其他参数一样,没有像Ruby那样的特殊块处理(你的标签表明Ruby块是你混乱的根源).
这是一个更干净,更易于阅读和理解的示例:
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"
Run Code Online (Sandbox Code Playgroud)
现在加载您的网站,转到控制台,然后调用该函数:
> tester()
This is param1
This is param2
< "done"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15827 次 |
| 最近记录: |