最近在处理 Backbone.JS/jQuery/CoffeeScript 项目时,我发现自己陷入了一堆回调和计时问题。我需要等待一些事情完成才能继续,发现自己陷入了一堆嵌套的回调......这令人困惑且难以调试。然后我找到了 2 个可能的解决方案 jQuery deferred或 IcedCoffeeScriptIcedCoffeeScript
看起来很简单,只需添加 await
& defer
.但是,我想知道它是否会留在那里? StackOverflow 上只有 2 个问题?与 CoffeeScript 相比,没有太多谈论它
另一件事是这两种方法之间的区别是什么,它们似乎做的事情大多相同?除了在 IcedCoffeeScript 中,它看起来更像是程序代码,而在 jQuery deferred 中,它并没有解决我的回调问题
最佳答案
这些是非常不同的技术:
await
扩展 CoffeeScript 的预编译器和 defer
为您转换代码的关键字,以便您可以以同步方式编写代码。在生成的 JavaScript 中,await
和 defer
产生嵌套函数。 这些技术中的每一种都与特定类型的 API 配合使用效果最佳。
await
和 defer
期望函数将单个回调作为其最后一个参数。当您的应用程序中有许多其他 Promise 时,Promise 效果最佳。处理 JavaScript 中的异步行为没有 Elixir 。您需要了解回调、 promise 和 PubSub(又名
EventEmitter
s)并为每个工作选择最佳工具。即使您使用 IcedCoffeeScript(这很酷),有时 Promise 仍会为您节省大量工作。我希望这有帮助。看看我的书,Async JavaScript ,了解更多信息。
关于coffeescript - IcedCoffeeScript 或 jQuery 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11381393/