如何把一个for循环写到promise中,让每一次循环都等上一次循环完成后再进行
时间: 2023-06-27 20:03:29 浏览: 76
可以使用递归函数和Promise来实现,每次循环结束后通过resolve回调函数触发下一次循环。
示例代码如下:
```javascript
function loopWithPromise(data, index) {
return new Promise((resolve, reject) => {
if (index >= data.length) {
resolve();
return;
}
// 模拟异步操作
setTimeout(() => {
console.log(data[index]);
loopWithPromise(data, index + 1).then(resolve);
}, 1000);
});
}
const data = [1, 2, 3, 4, 5];
loopWithPromise(data, 0).then(() => {
console.log("all done");
});
```
在这个示例中,我们使用了一个 `loopWithPromise` 函数,该函数接收两个参数:`data` 数组和当前索引值 `index`。我们通过判断当前索引值是否大于等于数组长度来确定是否结束递归,如果未结束,则执行异步操作(在这里使用了 `setTimeout` 模拟异步操作),并在异步操作完成后递归调用 `loopWithPromise` 函数,并在调用结束后通过 `resolve` 回调函数触发下一次循环。
最后我们调用 `loopWithPromise` 函数,并在所有循环结束后打印 `all done`。
阅读全文