Promise 概念简单介绍

Promise 概念简单介绍

1、Promise 是什么?

        Promise 是一个对象,对象里存储一个状态,这个状态是可以随着内部的执行转化的。简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。promise 有三种状态:等待中(Pending)、已完成(Fulfilled)、已失败(Rejected)。

2、Promise 作用

  • 主要用于异步计算
  • 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
  • 可以在对象之间传递和操作promise,帮助我们处理队列
  • 函数的调用会回到定义它的地方

3、Promise 特点

       当promise状态发生改变,就会触发then()里的响应函数处理后续步骤。promise状态一经改变,不会再变(不可逆状态 )。
   Promise对象的状态改变,只有两种可能:
   要么是从pending变为fulfilled
   要么是从pending变为rejected。
   只要这两种情况只要发生,状态就凝固了,不会再变了。

Promise 有两个参数 resolve 和 reject
          resolve作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
          reject作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

4、Promise 方法

          Promise是一个构造函数,他本身有 all, reject, resolve 方法,在他的原型上有 then, catch方法.
1)then()
        then 方法就是把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数。而 Promise 的优势就在于这个链式调用。我们可以在 then 方法中继续写 Promise 对象并返回,然后继续调用 then 来进行回调操作。可有两个参数,第一个是成功 resolve 调用的方法,第二个是失败 reject 调用的方法
         then方法注册 当resolve(成功)/reject(失败)的回调函数

promise.then(response=>{
	console.log(response)
})

2)catch()
          它可以和 then 的第二个参数一样,用来指定 reject 的回调。它的另一个作用是,当执行 resolve 的回调(也就是上面 then 中的第一个参数)时,如果抛出异常了(代码出错了),那么也不会报错卡死 js,而是会进到这个 catch 方法中。

promise.catch(error=>{
	console.log(error)
});

3)all()
         Promise 的 all 方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。
     只有全部为resolve才会调用 通常会用来处理 多个并行异步操作

const p1 = new Promise((resolve, reject) => {
    resolve(1);
});

const p2 = new Promise((resolve, reject) => {
    resolve(2);
});

const p3 = new Promise((resolve, reject) => {
    reject(3);
});

Promise.all([p1, p2, p3]).then(data => {
    console.log(data); // [1, 2, 3] 结果顺序和promise实例数组顺序是一致的
}, err => {
    console.log(err);
});

你可能感兴趣的:(Promise 概念简单介绍)