为解决异步函数的回调陷阱,开发社区不断摸索,终于折腾出 Promise/A+。它不增加新的语法,可以适配几乎所有浏览器;以队列的形式组织代码,易读好改;捕获异常方案也基本可用。这套方案在迭代中逐步完善,最终被吸收进 ES2015。不仅如此,ES2017 中还增加了 Await/Async,可以用顺序的方式书写异步代码,甚至可以正常抛出捕获错误,维护同一个栈。可以说彻底解决了异步回调的问题。
现在大部分浏览器和 Node.js 都已原生支持 Promise,很多类库也开始返回 Promise 对象,更有各种降级适配策略。Node.js 7+ 则实装了 Await/Async。如果您现在还不会使用,那么我建议您尽快学习一下。本场 Chat 我准备结合近期的开发经验,全面介绍 现代化的 JavaScript 异步开发。大纲如下:
- 什么是 Promise?
- 异步回调有哪些问题?
- Promise 详解
- 使用范例全面解析
- 常见错误
- 更好的解决方案:Await/Async
- Tips:在全平台使用
- Tips:在小程序使用
- Tips:使用 util.promisify 改进现有代码
难度:了解 JavaScript,最好有异步开发经验。
实录提要:
- 异步函数如何在 Gulp 里应用?
- 异步函数如何在 H5 项目中应用?
- promise 有什么缺陷,await 是怎么解决的?
- 模拟实现一个 promise,有没有好的仓库源码推荐?
- 异步编程在前后端分离的场景下,主要有哪些作用?前后端分离下的 API 该如何管理才合理?
- 有了 Async 还有必要学习 Generator 吗?
- “启用一个新栈”,可以理解为 eventloop 吗?
- JS 引擎返回的回调函数的结果,不会 push 到原程序运行的栈内吗?
阅读全文: http://gitbook.cn/gitchat/activity/593e7367aea43b638b4a363b
您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。