Promise常用 API
# Promise常用 API
## Promise.all
```
const p1 = new Promise((reject, resolve) => {
setTimeout(() => {
console.log('我是p1中输出的')
reject('我是p1')
}, 1000)
})
const p2 = new Promise((reject, resolve) => {
setTimeout(() => {
console.log('我是p2中输出的')
resolve('我是p2')
}, 2000)
})
const p3 = new Promise((reject, resolve) => {
setTimeout(() => {
console.log('我是p3中输出的')
reject('我是p3')
}, 3000)
})
Promise.all([p1, p2, p3]).then(value => {
console.log(value)
}).catch((error) => {
console.log('出错了' + error)
})
```
只有p1,,p2, p3三个promise状态都为成功才会执行成功的回调并接收一个数组,值与all中传入的Promise顺序一致。在这个例子中 p2 的状态为失败后会执行catch中的回调函数,并且 一秒后 p3 依旧会执行
## Promise.race
```
const p1 = new Promise((reject, resolve) => {
setTimeout(() => {
console.log('我是p1中输出的')
reject('我是p1')
}, 1000)
})
const p2 = new Promise((reject, resolve) => {
setTimeout(() => {
console.log('我是p2中输出的')
reject('我是p2')
}, 2000)
})
const p3 = new Promise((reject, resolve) => {
setTimeout(() => {
console.log('我是p3中输出的')
reject('我是p3')
}, 3000)
})
Promise.race([p1, p2, p3]).then(value => {
console.log(value)
}).catch((error) => {
console.log('出错了' + error)
})
```
只要 p1,p2,p3 中有一个的状态改变了就会调用成功或失败的回调,其他的依旧会执行