JS Promise 的使用

Promise对象用于表示一个异步操作的最终完成(或失败)的返回及其结果值

一个Promise必然处于以下几种状态之一:

  • 待定(pending):初始状态,既没有被兑现,也没有被拒绝。
  • 已兑现(fulfilled):意味着操作成功完成。
  • 已拒绝(rejected):意味着操作失败。
    如图:

待定状态的Promise对象会被一个值被兑现(fulfilled),要么通过一个原因被拒绝(rejected);

Promise的链式调用
工作中常用到以下三个方法将一个变为已敲定状态的promise关联起来。

  1. promise.then() 成功调用
  2. promise.catch() 失败调用
  3. promise.finaliiy() 成功或者失败都会被调用
    下面做一个真实的实例:
let promise = new Promise((resolve,reject) => {
                  setTimeout(() => {
                     resolve('唉,又帅了。')
                  }, 3000)
              })
promise.then(res => {
    console.log(res)
}).catch(err => {
    console.log('成功不会执行这里,但是我还是最帅的。')
}).finally(err => {
    console.log('成功或失败都会执行这里,唉,我那该死无处不在的魅力。')
})

Promise.ALL()
1.Promise.all()方法接收一个iterable类型(Arry,Map,Set都属于ES6的iterable类型)的输入,并且只返回一个Promise实例。
2.输入的resolve回调的结果是一个数组。
3.输入的iterable里没有promise的话,则回调reject,只要一个输入不和法的promise就会抛出错误。

const module = {
  x: 42,
  y: 39,
  getY: function() {
    return this.x + this.y
  },
  getX: function() {
    return this.x * this.y
  }
};

const unboundGetX = Promise.resolve(module.getX());
const unboundGetY = Promise.resolve(module.getY());

Promise.all([unboundGetX,unboundGetY]).then(val => {
  console.log(val);
})

//[1638, 81]
posted @ 2021-06-30 18:00  夏季的雨  阅读(598)  评论(0)    收藏  举报