Promise.all如何使用
时间: 2023-08-23 22:17:59 浏览: 41
Promise.all() 是一个方法,用于将多个 Promise 对象包装成一个新的 Promise 对象,当所有的 Promise 对象都成功完成时,新的 Promise 对象才会成功;如果其中一个 Promise 对象失败,则新的 Promise 对象会立即失败,并返回失败的原因。
使用方式如下:
```javascript
const promise1 = Promise.resolve('Hello');
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'World');
});
const promise3 = fetch('https://api.example.com/data');
Promise.all([promise1, promise2, promise3])
.then(values => {
console.log(values); // 输出 ["Hello", "World", response]
})
.catch(error => {
console.error(error); // 若有任一 Promise 失败,则输出失败的原因
});
```
在上面的例子中,我们创建了三个 Promise 对象:promise1、promise2 和 promise3。promise1 使用 Promise.resolve() 方法创建一个已解决(resolved)状态的 Promise 对象,promise2 则使用 setTimeout() 模拟一个异步操作,在 2 秒后将其状态设置为已解决,并返回 'World'。promise3 使用 fetch() 方法发送一个网络请求,返回一个 Promise 对象。
然后,我们使用 Promise.all() 方法将这三个 Promise 对象包装起来,并通过传入一个数组作为参数。当所有的 Promise 对象都成功完成时,promise.all() 的返回值将是一个新的 Promise 对象,该对象将包含所有成功的结果值(按照传入顺序)。在上述例子中,values 数组将包含 ["Hello", "World", response]。
如果其中一个 Promise 对象失败,则新的 Promise 对象会立即失败,并返回失败的原因。在 catch() 方法中,我们可以捕获到失败的原因并进行处理。
总之,Promise.all() 方法是用于处理多个 Promise 对象的情况,它将多个 Promise 对象组合成一个新的 Promise 对象,并在所有 Promise 对象都成功完成时才会成功。