JavaScript 异步开发攻略

作者/分享人:Meathill
向 Ta 提问
大家好,我叫翟路佳,花名“肉山”,这个名字跟 Dota 没关系,从高中起伴随我到现在。 我热爱编程,喜欢学习,喜欢分享,从业十余年,投入的比较多,学习积累到的也比较多,对前端方方面面都有所了解,希望能与大家分享。 我兴趣爱好比较广泛,尤其喜欢旅游,欢迎大家相互交流。 你可以在这里找到我: 博客:http://blog.meathill.com GitHub:https://github.com/meathill 微博:http://weibo.com/meathill

为解决异步函数的回调陷阱,开发社区不断摸索,终于折腾出 Promise/A+。它不增加新的语法,可以适配几乎所有浏览器;以队列的形式组织代码,易读好改;捕获异常方案也基本可用。这套方案在迭代中逐步完善,最终被吸收进 ES2015。不仅如此,ES2017 中还增加了 Await/Async,可以用顺序的方式书写异步代码,甚至可以正常抛出捕获错误,维护同一个栈。可以说彻底解决了异步回调的问题。

现在大部分浏览器和 Node.js 都已原生支持 Promise,很多类库也开始返回 Promise 对象,更有各种降级适配策略。Node.js 7+ 则实装了 Await/Async。如果您现在还不会使用,那么我建议您尽快学习一下。本场 Chat 我准备结合近期的开发经验,全面介绍 现代化的 JavaScript 异步开发。大纲如下:

  1. 什么是 Promise?
  2. 异步回调有哪些问题?
  3. Promise 详解
  4. 使用范例全面解析
  5. 常见错误
  6. 更好的解决方案:Await/Async
  7. Tips:在全平台使用
  8. Tips:在小程序使用
  9. Tips:使用 util.promisify 改进现有代码

难度:了解 JavaScript,最好有异步开发经验。

实录提要:

  • 异步函数如何在 Gulp 里应用?
  • 异步函数如何在 H5 项目中应用?
  • promise 有什么缺陷,await 是怎么解决的?
  • 模拟实现一个 promise,有没有好的仓库源码推荐?
  • 异步编程在前后端分离的场景下,主要有哪些作用?前后端分离下的 API 该如何管理才合理?
  • 有了 Async 还有必要学习 Generator 吗?
  • “启用一个新栈”,可以理解为 eventloop 吗?
  • JS 引擎返回的回调函数的结果,不会 push 到原程序运行的栈内吗?
已有420人预订
预订达标
文章出炉
交流日期
     
17.06.14
17.06.27
17.07.05 20:30
查看文章评论/提问
灌汤包
看不明白
Raven: 说明你基础太差了 赶紧先去恶补下
KING
好文,而且是长文,promise讲解中用到的读取文件的例子非常棒,但需要有一些node和promise基础; 同时由于主要讲promise的最佳用法,感觉有些东西没能细致的讲理论和原理,比如thenable是啥,这些还是得自己去琢磨和研究。
你可能还喜欢
哪些算法和数据结构是需要程序员必须掌握的?
zhen.guo
ACT 敏捷教练培养体系
Chat 三人行
Spring Cloud Consul 从入门到精通
如梦技术 dreamlu
技术部门 Leader 与团队那些事
Eason
Spring Data JPA 晋级提升篇:复杂场景实战用法与优化
张振华
高并发、高性能 Web 架构解决方案
Array老师
微信扫描登录