Promise
Promise 构造器
Promise 是一个构造器,用来创建 Promise 类型的对象 。就好像 Array 是一个构造器,用来创建数组。
格式
1 | var p1 = new Promise(function (resolve, reject) { |
三种状态
pending
pending,”行将发生的”。相当于是一个初始状态。
1 | var p = new Promise((ok, err) => { |
resolved
创建 Promise 对象时,在实参函数中调用了 ok 方法。
1 | var p = new Promise((ok, err) => { |
rejected
创建 Promise 对象时,调用 error 方法。
1 | var p = new Promise((ok, err) => { |
状态是可转化
1 | pending ----->ok() --> resolved; |
状态转换是不可逆的。一旦从 pending —> resolved(或者是 rejected),就不可能再回到 pending。也不能由 resolved 变成 rejected,或者反过来。 (这一点与水不同,水可以在液态,固态,气态三种状态中相互转换)。
promise 的值 promisevalue
一个 promise 对象除了状态之外,还有 promsievalue,在构造器中,这个值在调用 resolve 和 reject 方法时,自动传入。
例如:
1 | var p = new Promise( (resolve,reject) => { resolve(123); } ); |
单独来看 promiseValue 似乎没有什么意义,它的使用场景在于结合 promise 对象的实例方法一起来用来。
Promise 实例的方法
then()
- 如果 promise 对象的状态是 resolved,则
promisec对象.then()
会自动调用第一个函数; - 如果 promise 对象的状态是 rejected,则
promisec对象.then()
会自动调用第二个函数,如果此时 then 方法并没有设置第二个参数,就会报错; 这种情况的处理方法在后面介绍
1 | var p = new Promise((resolve, reject) => { |
catch()
finally()
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 JCAlways!