promise。all 和promise.this区别
时间: 2024-06-19 14:03:16 浏览: 10
Promise.all() 和 Promise.race() 都是 Promise 的静态方法,通过这两个方法我们可以方便的处理多个 Promise 实例。但是它们之间还有一些区别。
1. Promise.all()
- 接收一个由 Promise 对象组成的数组作为参数,将所有 Promise 实例包装成一个新的 Promise 实例。
- 只有所有 Promise 实例都为fulfilled状态,返回的实例才为fulfilled状态,且返回值是一个结果数组,顺序与原Promise数组相同。
- 只要有一个 Promise 实例被rejected,返回的实例就会被rejected,此时返回的结果为第一个被rejected的实例的返回值。
2. Promise.race()
- 接收一个由 Promise 对象组成的数组作为参数,将所有 Promise 实例包装成一个新的 Promise 实例。
- 只要有一个 Promise 实例的状态改变了(无论是fulfilled还是rejected),返回的实例就会改变,并执行相应的回调。
- 返回值是第一个改变状态的Promise实例的返回值。
例如,我们有一个包含两个异步操作的Promise数组,并用Promise.all()和Promise.race()分别处理这两个Promise实例,得到的结果如下:
```javascript
const promise1 = new Promise((resolve, reject) => setTimeout(() => resolve(1), 1000));
const promise2 = new Promise((resolve, reject) => setTimeout(() => reject(new Error('error')), 500));
Promise.all([promise1, promise2]).then(([result1, result2]) => console.log('all fulfilled', result1, result2)).catch(error => console.log('all rejected', error.message))
// 输出结果:all rejected error
Promise.race([promise1, promise2]).then(result => console.log('race fulfilled', result)).catch(error => console.log('race rejected', error.message))
// 输出结果:race fulfilled 1
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)