在javascript中链接异步调用的正确方法是什么?

在javascript中链接异步调用的正确方法是什么?,第1张

在javascript中链接异步调用的正确方法是什么?

有很多库和工具可以为您执行异步链接和控制流,它们主要有两个主要方面:

  1. 控制流库

例如,请参见async,seq和step(基于回调)或Q和future(基于承诺)。这些方法的主要优点是它们只是普通的JS库,可减轻异步编程的麻烦。

以我个人的经验,基于承诺的库倾向于导致代码看起来更像通常的同步代码,因为您使用“返回”返回值,并且由于可以传递和存储承诺值,因此类似于真实值。

另一方面,基于连续的代码则级别较低,因为它显式地 *** 纵代码路径。这可能可以允许更灵活的控制流以及与现有库的更好集成,但是也可能导致更多样板式和不太直观的代码。

  1. Javascript CPS编译器

扩展语言以添加对协程/生成器的本机支持,使您可以以非常直接的方式编写异步代码,并与其余语言配合使用,这意味着您可以使用Javascript
if语句,循环等,而无需使用函数复制它们。这也意味着将以前的同步代码转换为异步版本非常容易。但是,有一个明显的缺点,即并非每个浏览器都将运行您的Javascript扩展,因此您将需要在构建过程中添加一个编译步骤,以将代码转换为具有延续传递样式的回调的常规JS。无论如何,一种有前途的替代方法是Ecmascript
6规范中的生成器-
虽然到目前为止,只有Firefox本身支持它们,但仍有一些项目,例如regenerator和Traceur将其编译回回调。还有其他项目创建自己的异步语法(因为es6生成器当时还没有出现)。在此类别中,您将找到诸如tamejs和Iced
Coffeescript之类的东西。最后,如果您使用Node.js,也可以看看Fibers。



我的建议:

如果您只希望简单的东西不会使您的构建过程复杂化,那么我建议您使用最适合您的个人风格和已经使用的库的控制流库。

但是,如果您希望编写许多复杂且深度集成的异步代码,则强烈建议至少考虑使用基于编译器的替代方法。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5476945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存