栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在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。



我的建议:

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484806.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号