7.resolve()方法,reject()方法,all()方法,race()方法

1.resolve()方法,reject()方法,all()方法,race()方法都是Promise构造函数的方法
2.Promise.resolve()
  • 返回一个成功/失败的 Promise 对象

  • 如果传入一个 非 Promise 类型的对象,则返回的结果为成功的 Promise 对象,结果值就是参数值

    let p1 = Promise.resolve(521)
    console.log(p1);
    // Promise {<fulfilled>: 521}
  • 如果传入一个 Promise 类型的对象,则参数的状态就是返回值的状态,参数的结果就是返回值的结果

// 参数是一个成功的Promise
let p2 = Promise.resolve(new Promise((resolve, reject) => {
  resolve('ok')
}))
console.log(p2);
// Promise {<fulfilled>: 'ok'}
// 参数是一个失败的Promise
let p3 = Promise.resolve(new Promise((resolve, reject) => {
  reject('no ok')
}))
console.log(p3); 
// Promise {<rejected>: 'no ok'}

上文 p3 代码如果单独这么写会报错,因为有 Promise失败回调但是我们没有处理

我们用catch去处理错误

p3.catch(reason => {
  console.log(reason);
})
// no ok

3.Promise.reject()
  • 无论传什么参数都会返回一个失败的 Promise 对象,结果值是就是参数

let p1 = Promise.reject(521)
console.log(p1);
// Promise { <rejected> 521 }
p1.catch(reason => {
  console.log(reason);
})
// 521

let p2 = Promise.reject(new Promise((resolve, reject) => {
  resolve('ok')
}))
console.log(p2);
// Promise { <rejected> Promise { <resolved> 'ok' } }
p2.catch(reason => {
  console.log(reason);
})
// Promise { <resolved> 'ok' }

let p3 = Promise.reject(new Promise((resolve, reject) => {
  reject('no ok')
}))
console.log(p3);
// Promise { <rejected> Promise { <rejected> 'no ok' } }
p3.catch(reason => {
  console.log(reason);
})
// Promise { <rejected> 'no ok' }

 提示:跟resolve()方法不同的是,如果传入的参数是一个Promise对象,resolve()的返回结果就是传入参数的结果,而reject()的返回结果就是参数本身

4.Promise.all()
  •  Promise.all(promises)

  • promises: 包含了 n 个 promise 的数组

  • 返回一个新的 Promise 对象,只有所有的 Promise 都成功才成功,只要有一个失败旧直接失败

  • 成功的结果是所有 promise 成功结果组成的数组,失败结果是数组当中失败的 promise 的失败结果

  • 如果不止一个失败,失败结果就是数组中第一个失败的 promise 的失败结果

 例1:

    let p1 = new Promise((resolve, reject) => {
      resolve("ok");
    });
    let p2 = Promise.resolve("success");
    let p3 = Promise.resolve("oh yeah");
    const result1 = Promise.all([p1, p2, p3]);
    console.log(result1);
    // 可以看到在 PromiseResult 能看到这三个结果值

例2:

    let p4 = new Promise((resolve, reject) => {
      resolve("ok");
    });
    let p5 = Promise.resolve("success");
    let p6 = Promise.reject("oh yeah");
    const result2 = Promise.all([p4, p5, p6]);
    console.log(result2);
    // 可以看到在 PromiseResult 能看到 p6 的结果值

5.Promise.race() 
  • Promise.race(promises)

  • promises: 包含了 n 个 promise 的数组

  • 返回一个新的 Promise 对象,第一个完成的 promise 的结果状态就是最终的结果状态

   let p1 = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("ok");
      }, 1000);
    });
    let p2 = Promise.resolve("success");
    let p3 = Promise.resolve("oh yeah");
    const result = Promise.race([p1, p2, p3]);
    console.log(result);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值