coffeescript总是返回响应对象

我在coffeescript中有以下代码

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

要么,

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

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

提前致谢?

$.getJSON是一个AJAX调用, A代表异步,因此getSection将在$.getJSON从服务器返回响应之前返回。 基本上,你不能让getSection返回data.section除非你想用$.ajax替换$.getJSON并进行同步(即非异步)调用; 但是,同步调用是邪恶的,并且已被弃用,因此您不应使用它们。

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

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

然后你把你的逻辑放在callback而不是试图用getSection返回值做一些事情。

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