JavaScript 系列 - 异步编程

78 阅读1分钟

回调函数

优点

  • 简单、容易理解
  • Ajax、Fetch、EventSource

缺点

  • 多个回调函数嵌套的时候会造成回调函数地狱
  • 不利于维护,代码耦合高

事件监听

采用事件驱动模式,取决于某个事件是否发生

优点

容易理解,可以绑定多个事件,每个事件可以指定多个回调函数

缺点

事件驱动型,流程不够清晰

发布/订阅(观察者模式)

类似于事件监听,但是可以通过消息中心,了解现在有多少发布者,多少订阅者

Promise 对象

优点

可以利用 then 方法,进行链式写法;可以书写错误时的回调函数

缺点

  • 多个 then 的链式调用,可能会造成代码的语义不够明确
  • 编写和理解,相对比较难

Generator 函数

优点

函数体内外的数据交换、错误处理机制

缺点

流程管理不方便

co 模块

async 函数

优点

  • generator 和 promise 实现的一个自动执行的语法糖
  • 内置执行器、更好的语义、更广的适用性、返回的是 Promise、结构清晰

缺点

错误处理机制