如何调用作用域链上两级的函数,例如本例中的 _write_colors_data_to_file
:
class Server
_sio_configure_listener: (app) ->
sio = Socket.listen app,
'logger' : logger,
'log level': logger.level
# when Client user runs `io.connect()`
sio.sockets.on 'connection', (socket) ->
# when Client is live-previewing color
socket.on 'colorChanged', (data) ->
logger.info 'colorChanged event emitted'
# how do I invoke this method?
@_write_colors_data_to_file()
_write_colors_data_to_file: ->
# some logic
module.exports = Server
最佳答案
为此,我会避免使用两个级别的 =>
,这会将您的上下文弄得到处都是,并使事情对我的口味来说有点过于困惑。我会使用命名函数(或者至少是 CoffeeScript 版本的命名函数):
_sio_configure_listener: (app) ->
#...
save_colors = (data) =>
logger.info 'colorChanged event emitted'
@_write_colors_data_to_file()
sio.sockets.on 'connection', (socket) ->
socket.on 'colorChanged', save_colors
这保留了 binding =>
靠近您要绑定(bind)的 @
,稍后,当您绑定(bind)到 'colorChanged'
事件时,您只有一个简单的逻辑片段,方便命名为 save_colors
。
仅仅因为您可以在任何地方使用匿名函数并不意味着您必须这样做。
关于node.js - Coffeescript - 如何调用作用域链上两层的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20462081/