我的回答

  1. 回调函数
  2. promise
  3. generator
  4. async/await

参考回答

  • callback
    • 优点:逻辑简单
    • 缺点:深层级产生回调地狱
  • Promise
    • 优点:一旦状态改变就不会在变,任何时候都可以得到这个结果;可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
    • 缺点:无法取消,当处于pengding状态时,无法得知目前进展到哪一个阶段
  • Generator
    • 优点:执行可控;每一步可以传递数据,也可以传递异常
    • 缺点:控制流程比较复杂,成本比较高
  • async/await
    • 优点:代码清晰,不许需要链式调用就可以处理回调地狱的问题;错误的话可以被try catch
    • 缺点:控制流程复杂,成本较高