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函数返回它们的最终值。