js异步流程控制库

发布于 2022-08-31 20:33:59 字数 389 浏览 21 评论 0

刚开始写js(node)最怕就是写回调
常常会变成回调地狱
然后就开始使用一些异步流程控制库
async,还有国内的then.js(恕我懒惰至今没想去尝试使用promise)
我就还只是处于使用这些库
还没去到读懂源码清楚原理的程度
那么问题来了
我使用这些库主要是回避回调地狱同时也是同步的逻辑写代码
但实际上真的是同步吗?
如果这些库实现的是把异步非阻塞变成同步阻塞的话
像node的所谓优势(异步io)不就全没有了吗?
望指教!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你是我的挚爱i 2022-09-07 20:33:59

当然不是阻塞,本质上就是内部用各种数据结构帮你管理回调而已

promise的厉害之处就在于只用了一个api接口同时解决回调地狱和异步异常流程控制,还能轻松处理异步和同步流程混杂,说是JS语言内部缺少的一部分也不为过(实际上已经出现了原生Promise)

node的话我个人用的实现是bluebird,前端的话,jQuery的实现虽然有些问题但还是能用的

async.js则不同,更偏向于将每种常见的异步流程分别提供一个api来解决,错误处理和复杂异步逻辑的适应差promise一个档次,涉及其覆盖的常见异步流程的业务代码写起来比纯promise好看(其实promise的很多实现也开始学习async提供常见流程的简单封装)。而由于其本质上还是以回调为核心,一旦逻辑复杂起来,async.js的业务代码基本上还是迅速复杂、崩溃的命。

至于then.js,我只能说这个项目在设计上犯了一些根本性错误,而且不是严格意义上的开源项目,价值不大

旧竹 2022-09-07 20:33:59

我现在也只是算个node入门,控制流程的源码也只看过 step.js

所以,一些非常深的东西,我没有发言权;但我可以举一个简单例子:

当你要异步并行做4件事的时候,其实你在做5件事

挽心 2022-09-07 20:33:59

想想 promise 的涵义。

就是在同步流程中使用异步以提高效率。
特别是 async 就是出于这样的目的:在不牺牲可读性的前提下,尽可能多的使用异步到代码。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文