我正在为我的公司聊天系统开发Hubot适配器。以下代码的输出非常令人惊讶,我不知道下一步该去哪里。没有运行时错误(据我所知)
输出:
connect console
DEBUG connect logger
posted console
代码:
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'
答案 0 :(得分:1)
如果您希望@
在回调函数内部与外部相同,则使用fat-arrow (=>
)定义回调:
@jsonClient.post 'Route/WebService/Json/Login', loginRequest, (err, res, body) =>
#...
请记住,(Coffee | Java)脚本函数中的@
(AKA this
)取决于函数的调用方式,而不是函数的定义方式和位置(当然,除非你有一个约束功能......)。如果您使用=>
来定义该函数,那么它将绑定到当前@
和@logger
,并且@jsonClient
将是您希望它们在回调中的内容。< / p>
您也可以使用Function.bind
:
callback = (err, res, body) ->
console.log 'posted console'
@logger.debug 'posted logger'
@jsonClient.post 'Route/WebService/Json/Login', loginRequest, callback.bind(@)
如果你想要原生解决方案。