CoffeeScript:Callback.call不起作用

时间:2016-08-15 22:36:22

标签: javascript jquery ajax coffeescript

我正在向一个调用localhost上的API的页面添加一个加载微调器。以前,代码看起来像:

getDocumentContents: (id, callback) ->

  $.ajax(
    url: 'http://127.0.0.1:5000/doc/' + id
    type: 'GET'
      contentType: 'application/json'   
      success: callback
  )

它使用jQuery $ .ajax函数,它可以工作,调用回调但不向用户指示发生了任何事情。

为微调器类添加/删除和手动调用回调添加代码不起作用。微调器按预期显示和消失,但回调从未触发,并且我的控制台中没有出现JS错误:

getDocumentContents: (id, callback) ->

  $.ajax(
    url: 'http://127.0.0.1:5000/doc/' + id
    type: 'GET'
      contentType: 'application/json'
      beforeSend: ->
        $('#sidePanelBody i.article-spinner').addClass('fa fa-spinner fa-pulse fa-3x fa-fw')
     success: ->
        $('#sidePanelBody i.article-spinner').removeClass('fa fa-spinner fa-pulse fa-3x fa-fw')
        callback.call
  )

我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如Mu指出的那样,函数调用需要()而不是.call。我假设后一种语法来自我的假设,即CoffeeScript并不想要parens。我也错过了"数据"先前自动传递的参数,显然现在需要在函数闭包和回调调用中显式声明。此代码有效:

success: (data) ->
  $('#sidePanelBody i.article-spinner').removeClass('fa fa-spinner fa-pulse fa-3x fa-fw')
  callback(data)