Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/meathill/gitbook-javascript-async-tutorial

A full tutorial for JavaScript asynchronous development, with every new feature.
https://github.com/meathill/gitbook-javascript-async-tutorial

async-await async-javascript ebook gitbook gitchat javascript promise tutorial

Last synced: 29 days ago
JSON representation

A full tutorial for JavaScript asynchronous development, with every new feature.

Awesome Lists containing this project

README

        

前言
========

为解决异步函数的回调陷阱,开发社区不断摸索,终于折腾出 Promise/A+。它的优势非常显著:

1. 不增加新的语法,可以立刻适配几乎所有浏览器
2. 以队列的形式组织代码,易读好改
3. 捕获异常方案也基本可用

这套方案在迭代中逐步完善,最终被吸收进 ES2015。不仅如此,ES2017 中还增加了 Await/Async,可以用顺序的方式书写异步代码,甚至可以正常抛出捕获错误,维护同一个栈。可以说彻底解决了异步回调的问题。

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

## 关于这本书

这本书最开始的内容源于我在 [SegmentFault](https://segmentfault.com/) 做的一场分享: [Promise 的 N 种用法](https://segmentfault.com/l/1500000008757392)。

后来去 GitChat 分享时,选题比较犯难,就跟运营妹子商量要不再做一次同样题目,这样我也省事儿。结果挂出来后乏人问津,只好再跟运营开会讨论,然后决定更名为[《JavaScript 异步开发攻略》](http://gitbook.cn/books/594541981b8e4b4036720fc9/index.html),并且增加非 Promise 的内容。改名后终于过了下限,然后我就动手写,于是便有了这本小书。

我写这本书时就打算根据环境发展随时更新内容,没想到 GitChat 设计成后期不允许修改文章,要改只能把内容发给运营人工修改。因为我写的时候为了分章节好维护好管理,用的是 Git + Gitbook,索性脆放到 Gitbook 上好了。名字也改成现在这个样子,增加一个“全”字。

## 目标读者要求

1. 前端水平:初级、中级
2. 了解 JavaScript
3. 最好有异步开发经历,希望写出更好的代码

## 名词及约定

* ES6 = ES2015
* ES7 = ES2016 + ES2017
* 异步函数 = Async Functions = Await/Async

范例代码会使用 ES6 的语法,也会混用 ES6 Module 和 CommonJS,请大家不要见怪。我会在代码当中加注释,其中会有一些关键内容,请大家不要忽略。

本文中所有代码均以 Node.js 7.0 为基础。

## 作者介绍

大家好,我叫翟路佳,花名“肉山”,这个名字跟 Dota 没关系,从高中起伴随我到现在。

我热爱编程,喜欢学习,喜欢分享,从业十余年,投入的比较多,学习积累到的也比较多,对前端方方面面都有所了解,希望能与大家分享。

我兴趣爱好比较广泛,尤其喜欢旅游,欢迎大家相互交流。

你可以在这里找到我:

* [博客](http://blog.meathill.com)
* [微博](http://weibo.com/meathill)
* [GitHub](https://github.com/meathill)

## 版权许可

本书采用[“保持署名—非商用”创意共享4.0许可证](https://creativecommons.org/licenses/by-nc/4.0/)。

只要保持原作者署名和非商用,您可以自由地阅读、分享、修改本书。

## 反馈

如果您对于文中的内容有任何疑问,请在评论或 [Issue](https://github.com/meathill/javascript-async-tutorial/issues) 中告诉我。亦可发邮件给我:meathill[at]gmail.com。谢谢。