coffeescript - IcedCoffeeScript 或 jQuery 延迟

标签 coffeescript jquery-deferred iced-coffeescript

最近在处理 Backbone.JS/jQuery/CoffeeScript 项目时,我发现自己陷入了一堆回调和计时问题。我需要等待一些事情完成才能继续,发现自己陷入了一堆嵌套的回调......这令人困惑且难以调试。然后我找到了 2 个可能的解决方案 jQuery deferredIcedCoffeeScript
IcedCoffeeScript看起来很简单,只需添加 await & defer .但是,我想知道它是否会留在那里? StackOverflow 上只有 2 个问题?与 CoffeeScript 相比,没有太多谈论它

另一件事是这两种方法之间的区别是什么,它们似乎做的事情大多相同?除了在 IcedCoffeeScript 中,它看起来更像是程序代码,而在 jQuery deferred 中,它并没有解决我的回调问题

最佳答案

这些是非常不同的技术:

  • IcedCoffeeScript 是一个用 await 扩展 CoffeeScript 的预编译器和 defer为您转换代码的关键字,以便您可以以同步方式编写代码。在生成的 JavaScript 中,awaitdefer产生嵌套函数。
  • jQuery 延迟 (又名 Promises )是一种完全回避回调的方式:异步函数可以返回一个 Promise,而不是接受回调。然后将回调附加到 Promise。这是一种简单但功能强大的技术。我在书中专门写了一章,Async JavaScript .

  • 这些技术中的每一种都与特定类型的 API 配合使用效果最佳。 awaitdefer期望函数将单个回调作为其最后一个参数。当您的应用程序中有许多其他 Promise 时,Promise 效果最佳。

    处理 JavaScript 中的异步行为没有 Elixir 。您需要了解回调、 promise 和 PubSub(又名 EventEmitter s)并为每个工作选择最佳工具。即使您使用 IcedCoffeeScript(这很酷),有时 Promise 仍会为您节省大量工作。

    我希望这有帮助。看看我的书,Async JavaScript ,了解更多信息。

    关于coffeescript - IcedCoffeeScript 或 jQuery 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11381393/

    相关文章:

    javascript - 为 jQuery 延迟对象提供默认的 'fail' 方法

    javascript - jQuery Deferred 不按顺序调用解析/完成回调

    node.js - await...defer 在 forEach 循环中

    javascript 名称值不起作用

    javascript - Q.defer() 和 Promise() 的区别

    coffeescript - 用 Iced CoffeeScript 编写 Mocha 测试?

    javascript - 鼠标悬停事件传播问题 - 手动传播

    ruby-on-rails - 在 Rails 3.1 中使用不显眼的 Javascript(数据远程)的 Coffeescript 和 Haml

    javascript - 从 CoffeeScript 中的点击处理程序中调用另一个函数或方法