coffeescript总是返回响应对象

时间:2012-08-03 06:50:33

标签: jquery ajax coffeescript

我在coffeescript中有以下代码

getSection = (url) ->
  req = $.getJSON url
  return req.success (data) ->
    data.section

,或者

getSection = (url) ->
  req = $.getJSON url
  req.success (data) ->
    data.section

我打算为函数data.section返回getSection。但它总是返回另一个对象(可能是response / ajax对象)。如何强制从这个内部函数返回data.section中的值?

提前谢谢?

1 个答案:

答案 0 :(得分:3)

$.getJSON是一个AJAX调用, A 代表异步,因此getSection会在$.getJSON从其回复之前返回服务器。基本上,除非您要将getSection替换为$.ajax并执行同步(即非异步)调用,否则无法让data.section返回$.getJSON;但是,同步调用是邪恶的,并且已被弃用,所以你不应该使用它们。

通常的解决方案是将回调传递给getSection

getSection = (url, callback) ->
  req = $.getJSON url
  req.success (data) ->
    callback(data.section)

然后您将逻辑放在callback中,而不是尝试使用getSection返回值执行某些操作。

您的getSection正在返回req,因为这是req.success返回的内容,而CoffeeScript函数会返回其最终值。