20200312

@xiaojingzhao

Plan

  • 你不知道的 js 中卷 -- promise

Notes

promise.defer 是做什么用的?

Promise 模式

  • promise.race 中不要传入空数组。永远是 pending

  • promise.race 可以用来判断某个异步操作是否超时

  • Promise.none

  • Promise.any -- 忽略拒绝,只需要完成 1 个

  • Promise.first

  • Promise.last

promise 的局限性

  1. 错误处理

一旦出现错误,但是又没有错误处理函数,错误会被一直传递下去。又或者在结尾处添加 catch 来捕获错误,但是 promise 链中某处添加了错误处理,那么这个错误就被吞掉了。

  1. 单一值:每次往下传递的值是单一的,除非自己做封装(但是不优雅)
  2. 单决议:
  3. 惯性:从回调 => promise
  4. 无法取消一个 promise
  5. 性能:会比基于回调的异步操作慢一些

More