CoffeeScript如何处理异步调用?

时间:2011-06-20 01:18:30

标签: javascript asynchronous coffeescript

当前的异步JavaScript调用要求我们使用回调函数。当您需要根据第一个Ajax调用中返回的数据进行第二次Ajax调用时,这会导致“兔子漏洞”代码。

尝试在不使用回调的情况下进行异步JavaScript调用。谷歌,Narative.js。目标是更易于管理和可读的代码。

我的问题是,CoffeeScript如何处理像Ajax这样的异步JavaScript调用?是否需要回调或是否可以在没有回调的情况下进行异步调用?

4 个答案:

答案 0 :(得分:2)

CoffeeScript没有提供任何针对异步性的特定功能,因为这必然会导致CoffeeScript代码与JavaScript输出之间存在较大差距。请参阅有关建议的defer语法的讨论:

https://github.com/jashkenas/coffee-script/issues/350

因此,如果您使用CoffeeScript,则应使用与JavaScript中相同的习语和库来处理异步行为。不同之处在于,您的回调将被写为-> ...而不是function() {...}

答案 1 :(得分:1)

Coffeescript是一种人们认为比Javascript更清晰,更简洁,更易于编写和阅读的语言。 Coffeescript编译为Javascript,然后在Javascript虚拟机上运行。在一天结束时,Coffeescript只能做Javascript能够做的事情。

  

CoffeeScript如何处理异步调用?

喜欢Javascript。如果要使用回调,请使用回调。如果您想使用Narative.js,请使用它。如果你想使用Jquery,请使用它。

答案 2 :(得分:0)

你可以使用jquery $.when(不是特定于咖啡脚本)来使事情更加清晰。

var firstCall = $.get 'stuff.json'
$.when(firstCall).then #make second call

答案 3 :(得分:0)

您可能希望采用https://github.com/mirek/node-flat-flow方法使呼叫链保持平稳。它与coffeescript配合得非常好。