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 中有一个的状态改变了就会调用成功或失败的回调,其他的依旧会执行

 

posted @ 2022-05-10 10:03  这个名字没占用  阅读(75)  评论(0)    收藏  举报