1. callback回调函数:
优点:
- 简单
- 符合传统js
缺点:
- 容易形成回调地狱
- 回调嵌套会导致代码难以维护
- 并且不方便统一处理错误(不能 try catch)
2.promise:
优点:
- 一旦状态改变,就不会再变,任何时候都可以得到这个结果
- 可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
缺点:
- 无法取消 Promise
- 当处于pending状态时,无法得知目前进展到哪一个阶段
- 错误不能被 try catch
3.Generator:
优点:
- 是有了执行器后,代码非常直观,阅读上最接近于同步编程,并且代码量很少。
缺点:
- 不写一个执行器的话,可读性极差,嵌套很多;
4.async/await:
优点:
- 代码清晰,
- 不用像 Promise 写很多 then ,
- 可以处理回调地狱的问题
- 并且错误可以被
try catch
。
缺点:
- await 将异步代码改造成同步代码,如果多个异步操作没有依赖性而使用 await 会导致性能上的降低。