当前的异步JavaScript调用要求我们使用回调函数。当您需要根据第一个Ajax调用中返回的数据进行第二次Ajax调用时,这会导致“兔子漏洞”代码。
尝试在不使用回调的情况下进行异步JavaScript调用。谷歌,Narative.js。目标是更易于管理和可读的代码。
我的问题是,CoffeeScript如何处理像Ajax这样的异步JavaScript调用?是否需要回调或是否可以在没有回调的情况下进行异步调用?
答案 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配合得非常好。