最近在Backbone.JS / jQuery / CoffeeScript项目上工作时,我发现自己处于一些回调和计时问题.我需要等待一些事情完成,然后继续,发现自己在一堆嵌套的回调…这是混乱和难以调试.然后我找到2个可能的解决方案
jQuery deferred或
IcedCoffeeScript
IcedCoffeeScript看起来真的很简单,只需添加等待&推迟.但是,我想知道它是否在那里停留? StackOverflow只有2个问题?与CoffeeScript相比没有多少谈论
另外一件事是两种方法之间的区别呢,他们似乎主要做同样的事情呢?除了IcedCoffeeScript之外,它看起来更像是程序代码,而在jQuery延迟的时候,它并没有解决我的麻烦的回调,
解决方法
这些是非常不同的技术:
> IcedCoffeeScript是一个预编译器,通过await和defer关键字来扩展CoffeeScript,可以转换代码,以便您可以以同步的方式编写代码.在生成的JavaScript中,等待和延迟生成嵌套函数.
> jQuery Deferred(aka Promises)是一种侧向回调的方法:而不是采取回调,异步函数可以返回一个Promise.然后将回调函数附加到Promise.这是一个简单而强大的技术.我在我的书,Async JavaScript中写了一章.
这些技术中的每一种最适合于某种API.等待和推迟期望一个函数作为其最后一个参数采用单个回调.当您的应用程序中有许多其他承诺时,承诺最有效.
在JavaScript中处理异步行为没有任何神奇的子弹.您需要了解回调,Promises和PubSub(也称为EventEmitters),并为每个作业选择最佳工具.即使您使用IcedCoffeeScript(很酷),还有一些Promises将为您节省大量工作.
我希望有帮助.查看我的书,Async JavaScript,了解更多信息.