介绍
异步处理是 JavaScript 编程领域最最重要的知识。
JavaScript 中异步的产生主要是因为其单线程处理能力。在单线程处理能力下,JavaScript 被迫只能在一个时间只做一件事情,这样就会导致一个很致命的问题 —— 当 JavaScript 在执行耗时较长或者未知处理时间的 IO、HTTP请求或者计算等工作时,浏览器会卡死在那里,最终的结果会导致浏览器长期无响应或者崩溃,用户大量流失。
关于 JavaScript 单线程具体的处理方式详细可以转到 事件循环 一节进行查看。
为了解决这样致命的问题,JavaScript 引入了异步处理方案。
JavaScript 异步处理归功于 JavaScript 函数是一等公民的特性。都知道,在 JavaScript 中,函数是一等公民 —— 函数可以当做参数传入另外一个函数,也可以作为返回值进行返回。正是因为这一特性,我们就可以将函数作为异步的回调函数进行传递,这个回调函数将在异步处理完成后执行,这就是 callback 。之后的异步处理方案 Promise、Generate、async 都是利用了这样一个特性。
大纲
- 在进入详细介绍 JavaScript 异步处理之前,会介绍高阶函数
- 高阶函数之后,我们会接触最最原始的 JavaScript 异步处理 —— 回调函数
- 回调函数的基本概念、语法和几种形式
- 回调函数的使用场景 —— AOP 面向切面编程、ES6 装饰器
- 回调函数的回调地狱问题以及问题解决的方式(发布-订阅模式,观察者模式)
- ES6 之前的异步处理方式 Promise
- Promise 的概念和基本使用
- Promise A+ 规范
- 实现最最简单的 Promise
- 实现具备处理异步处理能力的 Promise
- 实现比较完备的 Promise
- ES6 操作异步的方式 Generator
- Generator 的概念和基本使用
- Iterator 遍历器
- Generator 使用语法详细介绍
- Thunk 函数
- co 模块
- 使用场景
- ES7 处理异步方式 async + await
- 基本概念和基本使用
- 语法详解
- 实现原理
- 异步遍历器
- 使用场景
- JavaScript 异步处理总结