介绍

异步处理是 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 异步处理总结