在Coffeescript中返回Ajax请求的结果

在Coffeescript中返回Ajax请求的结果,ajax,coffeescript,Ajax,Coffeescript,我还在想咖啡脚本,看看它能做些什么 我已经编写了一个进行ajax调用的方法,我希望返回结果 例如: GetViewedItem: (foo) -> $.ajax '/Foo/Bar/', type: 'GET', data: { id: $(foo).data('fooId') } success: (data) -> data 我想返回数据。在CoffeeScript中有没有一种聪明的方法来实现这一点,还是我只需要声明一个变量 谢谢

我还在想咖啡脚本,看看它能做些什么

我已经编写了一个进行ajax调用的方法,我希望返回结果

例如:

GetViewedItem: (foo) ->
    $.ajax '/Foo/Bar/',
    type: 'GET',
    data: { id: $(foo).data('fooId') }
    success: (data) ->
        data
我想返回数据。在CoffeeScript中有没有一种聪明的方法来实现这一点,还是我只需要声明一个变量


谢谢

因为AJAX请求是异步的,所以不能用这种方式返回数据。这意味着,在调用成功回调时,您的
GetViewedItem
方法将完成执行

通常,您将继续在成功回调中处理AJAX数据,或者从成功回调调用相应处理数据的方法

handleViewedItem: (data) ->
    // Do something now that the AJAX call is complete.

GetViewedItem: (foo) ->
    $.ajax '/Foo/Bar/',
        type: 'GET',
        data: { id: $(foo).data('fooId') }
        success: (data) ->
            handleViewedItem data

这可能是使用JS和AJAX时需要理解的最重要的概念之一。

因为AJAX请求是异步的,所以不能以这种方式返回数据。这意味着,在调用成功回调时,您的
GetViewedItem
方法将完成执行

通常,您将继续在成功回调中处理AJAX数据,或者从成功回调调用相应处理数据的方法

handleViewedItem: (data) ->
    // Do something now that the AJAX call is complete.

GetViewedItem: (foo) ->
    $.ajax '/Foo/Bar/',
        type: 'GET',
        data: { id: $(foo).data('fooId') }
        success: (data) ->
            handleViewedItem data

这可能是使用JS和AJAX时需要理解的最重要的概念之一。

如前所述,这与浏览器中的异步javascript有关。CoffeeScript有一个“补丁”可以直接处理这个问题(添加异步/延迟),请参阅。例如,它类似于(根据我对它的理解,我的猜测):


还有许多其他javascript库也可以用于类似目的。但是请注意,当脚本等待数据时,浏览器可能会显示为“挂起”(不确定“延迟”函数是否继续处理javascript事件)。

如前所述,这与浏览器中的异步javascript有关。CoffeeScript有一个“补丁”可以直接处理这个问题(添加异步/延迟),请参阅。例如,它类似于(根据我对它的理解,我的猜测):


还有许多其他javascript库也可以用于类似目的。但是请注意,当脚本等待数据时,浏览器可能会显示为“挂起”(不确定“延迟”函数是否继续处理javascript事件)。

完全了解这一点。只是不知道coffeescript是否有一种奇特的方式来呈现这段代码。我猜不是吧?对不起,我不是故意装出居高临下的样子。我试着用一般的术语回答问题,以帮助未来的读者。如果函数需要保持异步,你就不能真正
返回数据。别担心,这一点也不谦逊。我认为我没有很好地解释我对这个问题的理解。谢谢桑德罗的解释,他帮了我很多。我完全意识到这一点。只是不知道coffeescript是否有一种奇特的方式来呈现这段代码。我猜不是吧?对不起,我不是故意装出居高临下的样子。我试着用一般的术语回答问题,以帮助未来的读者。如果函数需要保持异步,你就不能真正
返回数据。别担心,这一点也不谦逊。我认为我没有很好地解释我对这个问题的理解。谢谢Sandro的解释,他帮了我很多。你的意思是“将”异步转换为同步吗?你的意思是“将”异步变为同步吗?