0

I'm working on a Hubot adapter for my corporate chat system. The output of the following code is quite surprising, I'm not sure where to go next. There is no runtime error (as far as I can tell)

Output:

connect console
DEBUG connect logger
posted console

Code:

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'
4

1 回答 1

1

如果您希望@回调函数内部与外部相同,则使用粗箭头 ( =>)定义回调:

@jsonClient.post 'Route/WebService/Json/Login', loginRequest, (err, res, body) =>
  #...

请记住, (Coffee|Java)Script 函数中的@(AKA this) 取决于函数的调用方式,而不是函数的定义方式或位置(当然,除非您有绑定函数......)。如果您使用来定义函数,=>那么它将绑定到当前@并且将是您期望它们在回调中的内容。@logger@jsonClient

你也可以使用Function.bind

callback = (err, res, body) ->
  console.log 'posted console'
  @logger.debug 'posted logger'

@jsonClient.post 'Route/WebService/Json/Login', loginRequest, callback.bind(@)

如果您想要本机解决方案。

于 2014-01-16T21:00:01.297 回答