Node.js nodejs上的coffeescript中我的Hubot适配器的奇怪行为
我正在为我的公司聊天系统开发Hubot适配器。下面代码的输出非常令人惊讶,我不知道下一步该怎么做。没有运行时错误(据我所知) 输出:Node.js nodejs上的coffeescript中我的Hubot适配器的奇怪行为,node.js,coffeescript,hubot,Node.js,Coffeescript,Hubot,我正在为我的公司聊天系统开发Hubot适配器。下面代码的输出非常令人惊讶,我不知道下一步该怎么做。没有运行时错误(据我所知) 输出: connect console DEBUG connect logger posted console 代码: 如果希望@在回调函数内部与外部相同,请使用以下命令定义回调: 请记住,(Coffee | Java)脚本函数中的@(也称this)取决于函数的调用方式,而不是函数的定义方式或定义位置(当然,除非有绑定函数…)。如果您使用=>定义函数,那么它将绑定到当前
connect console
DEBUG connect logger
posted console
代码:
如果希望
@
在回调函数内部与外部相同,请使用以下命令定义回调:
请记住,(Coffee | Java)脚本函数中的@
(也称this
)取决于函数的调用方式,而不是函数的定义方式或定义位置(当然,除非有绑定函数…)。如果您使用=>
定义函数,那么它将绑定到当前@
和@logger
,并且@jsonClient
将是您期望它们在回调中的位置
您还可以使用:
如果您想要本机解决方案。有什么令人惊讶的?没有
@logger.debug“发布的记录器”
输出?调用其回调时,@jsonClient.post
使用什么上下文?@muistooshort是的,这让我感到惊讶。事实上,这个例子被简化了。实际上,我想在延续中进行另一个http调用,但似乎什么也没发生。上下文不知道。我在本地类的ctor中实例化jsonClient——这是否回答了问题?
connect: ->
console.log 'connect console'
@logger.debug 'connect logger'
@jsonClient.post 'Route/WebService/Json/Login', loginRequest, (err, res, body) ->
console.log 'posted console'
@logger.debug 'posted logger'
@jsonClient.post 'Route/WebService/Json/Login', loginRequest, (err, res, body) =>
#...
callback = (err, res, body) ->
console.log 'posted console'
@logger.debug 'posted logger'
@jsonClient.post 'Route/WebService/Json/Login', loginRequest, callback.bind(@)