Promise
# Promise
# 简介
MDN长解释:
一个 Promise 对象代表一个在这个 promise 被创建出来时不一定已知值的代理。它让你能够把异步操作最终的成功返回值或者失败原因和相应的处理程序关联起来。这样使得异步方法可以像同步方法那样返回值:异步方法并不会立即返回最终的值,而是会返回一个 promise,以便在未来某个时候把值交给使用者。
短解释
Promise 是一个对象,它代表了一个异步操作的最终完成或者失败。
# 优势
- 使用链式调用,解决回调地狱
- 与async/await结合使用编写看起来像同步代码一样的异步代码。
- 更容易地处理异步代码,使复杂的异步代码更容易编写和维护。
# 特点
- 对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态
- 一旦状态改变,就不会再变,Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果
# Promise.all
- 接受一个数组,数组里面都是promise的实例,如果不是就会调用promise.resolve来将参数转成promise实例
- 只有数组内所有都是fulfilled的情况下Promise.all才会fulfilled
- 如果有一个是reject那么Promise.all才会reject
- 如果作为参数的 Promise 实例,自己定义了catch方法,那么它一旦被rejected,并不会触发Promise.all()的catch方法。
var p1=new Promise(res=>{
setTimeout(()=>{res(1)},1000)
})
var p2=new Promise(res=>{
setTimeout(()=>{res(2)},1000)
})
var p3=3
var p4=Promise.resolve(4)
Promise.all([p1,p2,p3,p4]).then((data)=>{
console.log(data)
})
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
编辑 (opens new window)
上次更新: 2023/01/02, 17:45:07