V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
meathill
V2EX  ›  分享创造

JavaScript 异步开发全攻略

  •  
  •   meathill ·
    meathill · 2017-07-16 14:46:20 +08:00 · 4037 次点击
    这是一个创建于 2686 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写了一本介绍 JavaScript 异步开发的小书: https://meathill.gitbooks.io/javascript-async-tutorial/content/

    除了比较详细的介绍了异步开发面临的问题,Promise 和异步函数的使用,还结合实际开发中遇到的一些场景进行了分析,给出了范例代码,比如小程序、Vue 等。水平有限,大家如果发现问题,也请不吝赐教。

    因为种种原因开启的这个话题,我希望能够把它尽量做完整,所以会保持随时更新,尽量涵盖最近遇到的问题。

    希望对大家有所帮助。

    10 条回复    2017-07-17 16:06:42 +08:00
    ijse
        1
    ijse  
       2017-07-16 15:00:32 +08:00
    很不错~

    不过感觉题目起得大了一点,只介绍了 Promise 及 Async 两种嘛, 其实前端异步的解决方案挺多的,早期 Promise 普及前的 EventEmitter 类似的事件方案、Async.js 的函数库方案,还有一些尝试从编译入手的 Jscex (后改名 wind.js )、还有响马的 fibjs 也算,等等,写一本书也挺精彩的了~
    meathill
        2
    meathill  
    OP
       2017-07-16 15:10:33 +08:00
    @ijse

    谢谢回复。是这样的,在我看来,异步回调和事件机制这些早期处理异步的做法,都很简单,但都有问题。既然是攻略,那一定是介绍更好的做法,尽量让读者绕过一些坑,所以就没提。老赵的 wind.js 很棒,可惜早于这个世代,被埋没了,但这会儿再去介绍,也不太合适。fibjs 我的确没了解过,回头学习一下。
    ijse
        3
    ijse  
       2017-07-16 15:26:30 +08:00
    是的,后来这些方式都不流行了,不过作为历史了解一下也不错,从中可以看出 js 的发展特点,也能够给读者一些不同思路。

    PS: 上一个回复中写错了,wind.js 不是编译而是使用 eval(), fibjs 才是。。
    sagaxu
        4
    sagaxu  
       2017-07-16 15:29:24 +08:00
    在 await 出来之前,js 异步开发太烧脑了
    meathill
        5
    meathill  
    OP
       2017-07-16 15:37:41 +08:00
    @ijse 不是吧,如果我没记错的话,wind.js 分开发环境和生产环境,前者用 `eval()`,后者编译。或者说正是因为前者用 `eval()` 被一群键盘侠骂惨了,老赵才搞了个编译版本出来,结果键盘侠还是不肯放过他,他才干脆关闭了项目。

    刚看了一下 fibjs,知乎上看的,感觉是另起炉灶的 node.js 啊,那成本有点高哟……
    nino
        6
    nino  
       2017-07-16 18:31:51 +08:00
    老赵出 wind.js 的时候,前端有构建过程的公司,少之又少…… 这几年算是天翻地覆了
    meathill
        7
    meathill  
    OP
       2017-07-16 20:08:56 +08:00
    @nino 没错,我也是从他那里学到的,原来还能这样玩~~
    AlwaysBee
        8
    AlwaysBee  
       2017-07-16 21:25:19 +08:00
    @meathill 当初公司就是用 fib.js 重构代码(勇气可嘉啊),大半年之后,还是回到 node.js
    Sapp
        9
    Sapp  
       2017-07-17 14:22:02 +08:00
    自从有个 async/await,再也没觉得异步是个什么很麻烦的事了...
    LeeSeoung
        10
    LeeSeoung  
       2017-07-17 16:06:42 +08:00
    不错,支持下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2394 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 15:50 · PVG 23:50 · LAX 07:50 · JFK 10:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.