js for循环中请求异步等请求全部结束再执行
时间: 2023-08-05 13:16:16 浏览: 173
在for循环中依次执行异步操作
如果你想在一个 for 循环中发起多个异步请求,等待所有请求都完成之后再执行一些操作,可以使用 Promise.all() 方法。
具体的做法是,将每个异步请求封装成一个 Promise 对象,然后将所有 Promise 对象放入一个数组中,最后使用 Promise.all() 方法将这个数组作为参数传入。Promise.all() 方法返回一个 Promise 对象,当所有 Promise 对象都成功完成时,它的状态变为 fulfilled,同时返回一个包含所有 Promise 结果的数组。如果其中有任何一个 Promise 对象失败了,那么 Promise.all() 的状态就会变成 rejected,同时返回失败的 Promise 对象的错误信息。
下面是一个示例代码:
```
let urls = [url1, url2, url3];
let promises = [];
for (let url of urls) {
promises.push(fetch(url));
}
Promise.all(promises)
.then(responses => {
// 所有请求都成功返回,可以执行一些操作
})
.catch(error => {
// 处理错误
});
```
在这个例子中,我们定义了一个包含三个 URL 的数组 urls,然后使用 for 循环遍历数组,并将每个 URL 封装成一个 Promise 对象,放入 promises 数组中。最后,我们使用 Promise.all() 方法等待所有 Promise 对象都成功完成,然后执行一些操作。如果其中任何一个 Promise 对象失败了,我们就在 catch() 方法中处理错误。
阅读全文