- Promise 是异步编程的一种解决方案: 从语法上讲,promise 是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。
- Promise 有三种状态:pending(等待态),fulfilled(成功态),rejected(失败态);状态一旦改变,就不会再变。创造 promise 实例后,它会立即执行。
- 缺陷:依旧是基于回调函数的,进化--> generator + co / async + await。
- 同步的方式写异步的代码,用来解决回调地狱问题。
- 此外,promise 对象提供统一的接口,使得控制异步操作更加容易。
- Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
- 从语法上说,promise 是一个对象,从它可以获取异步操作的的最终状态(成功或失败)。
- Promise 是一个构造函数,对外提供统一的 API,自己身上有 all、reject、resolve 等方法,原型上有 then、catch 等方法。
- Promise 对象的状态不受外界影响,1)pending 初始状态、2)fulfilled 成功状态、3)rejected 失败状态,Promise 有以上三种状态,只有异步操作的结果可以决定当前是哪一种状态,其他任何操作都无法改变这个状态。
- Promise 的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由 pending 变成 fulfilled 或者由 pending 变成 rejected。
- Promise
- Class 类
- 改变 this 指向 (call、apply 和 bind)
- 事件循环 Event Loop
- Promise 是一个类,类中的构造函数需要传入一个 executor ,默认就会执行,executor 中有两个参数 分别是 resolve,reject。
- 调用成功和失败时 需要传递一个成功的原因和失败的原因,如果已经成功了就不能失败了,如果抛出异常按照失败来处理。 resolve&reject
因为每次调用 then 方法,会产生新的 Promise,才能保证状态一直改变(当上层 promsie 失败时,之后走起 then 方法的 onReject,返回新的 Promise 会走其 then 方法的 onFulfilled)。
- 如果 then 方法中(成功或失败),返回的不是一个 Promise,那么会将值(then 的返回值)传递给外层下一次 then 的成功的结果,如果 then 方法出错,抛出异常,则会走外层下一个 then 方法的失败。
- 如果返回的是一个 Promise,则会用这个 Promise 的成功/失败,走外层下一个 then 的成功/失败。
- 返回的 Promise 出错(失败)就失败 ---> 其他一律会走下一个 then 的成功里。
- catch 就是 then 的别名 没有成功只有失败 (找最近的优先处理,处理不了找下一层)(也就是说,当 promise 失败了,会先找 then 的 onReject 方法去返回失败的值,如果找不到就会走 catch)。
then 方法的链式调用