- Promise 本质是一个状态机。每个 promise 只能是 3 种状态中的一种:pending、fulfilled 或 rejected。状态转变只能是 pending -> fulfilled 或者 pending -> rejected。状态转变不可逆。
- then 方法可以被同一个 promise 调用多次。
- then 方法必须返回一个 promise。规范里没有明确说明返回一个新的 promise 还是复用老的 promise(即 return this),大多数实现都是返回一个新的 promise,而且复用老的 promise 可能改变内部状态,这与规范也是相违背的。返回任意一个非 promise 的值都会被包裹成 promise 对象,即 return new Error('error!!!') 等价于 return Promise.resolve(new Error('error!!!')),return 2 等价于return Promise.resolve(2);同时.then 或 .catch 返回的值不能是 promise 本身,否则会造成死循环
- 值穿透。.then 或者 .catch 的参数期望是函数,传入非函数则会发生值穿透
- promise 自身是同步的
promise的理解
最新推荐文章于 2022-04-03 11:01:15 发布