gpt4 book ai didi

javascript - Socket.io Nodejs CoffeeScript在socket.on中同时获取套接字和当前继承的类变量

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:33 26 4
gpt4 key购买 nike

我遇到了一个问题,我需要套接字和类实例,但无法获取它们。我有配置文件,其中包含诸如消息、发布、共享之类的事件。我有以下代码:

module.exports = class Controller

constructor : (container) ->
@_routes = null

_generateRoutes : (routes) ->
@_routes = routes

_bind : (socket) ->
instance = @
for route in @_routes
# TODO : fix this
socket.on route['event'], (data) ->
instance[route['action']](@, data)

问题是,我可以调用该表中的任何事件,它总是以共享事件结束。我认为实例[route['action]] 可能有问题。有没有办法明确地说我只想要变量的值,而不是函数中的当前变量?

因此,每次我都可以在直接绑定(bind)套接字操作时获取套接字,或者在继承类中使用 => 时仅获取类实例。

感谢您的回复

最佳答案

所以我意识到该代码有什么问题。它应该使用闭包。对于闭包,coffeescript 中有一个关键字“do”。然后,它不会在每个循环中使用更改的路由值,而是使用本地值。

固定的 _bind 函数如下所示:

    _bind : (socket) ->
instance = @
for route in @_routes
do (route)->
socket.on route['event'], (data) ->
instance[route['action']](@, data)

关于javascript - Socket.io Nodejs CoffeeScript在socket.on中同时获取套接字和当前继承的类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22399291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com