Backbone,Coffescript-在AJAX中将函数作为回调传递

Backbone, Coffeescript - passing function as a callback in AJAX

本文关键字:回调 函数 Coffescript- AJAX Backbone      更新时间:2023-09-26

在我的Backbone View中,我有两个方法,一个是简单的AJAX调用,另一个是我想要运行的回调函数。我想用回调函数作为参数来调用AJAX方法。

call_ajax_function: =>
  @get_stuff(@my_callback)
get_stuff: (callback_function) =>
  $.ajax
    url:'get_something'
    success: =>
      callback_function
my_callback: =>
  console.log "hello"

但我不认为"my_callback"会被调用。有什么想法吗?

您需要调用您的函数,尝试更改

get_stuff: (callback_function) =>
  $.ajax
    url:'get_something'
    success: =>
      callback_function

get_stuff: (callback_function) ->
  $.ajax
    url:'get_something'
    success: (data) => #success takes arguments, pass them thru
      callback_function(data)

我认为您不需要像现在这样将参数传递到get_stuff中。所以我认为这应该工作

get_stuff: ->
  $.ajax
    url:'get_something'
    success: (data) => 
      @callback_function(data)

此外,它的优点是回调的上下文将是实例,即在回调执行中@将是正确的实例。

如果你想动态地指定回调方法,并且你想指定该方法执行的范围,你需要像一样使用call

get_stuff: (onSuccess)->
      $.ajax
        url:'get_something'
        success: (data) => 
          onSuccess.call @, data

需要注意的是,当在类上定义方法时,我不认为=>会给你带来任何好处。这些方法使用->。如果要将上下文查看为匿名函数,请使用=>