gpt4 book ai didi

javascript - 如何仅在异步命令完成后循环遍历数组?

转载 作者:行者123 更新时间:2023-12-04 09:37:42 25 4
gpt4 key购买 nike

我需要将大约 35 个对象保存到 Mongoose。在上一个完成之前,我不想保存下一个。

我尝试了下面的代码,但没有用。

function loopData(array){
let i = array.length - 1;
while( i >= 0){
delete array[i]['date'];
delete array[i]['saved'];
let article = array[i];
DBM.saveArticle(article).then(() => {
i--;
console.log('article saved', i)
});
}
}

我试过这个,但它不起作用,因为 myLoop 不被识别为异步:
function loopData(array){
for( let i = array.length - 1 ; i-- ; i >= 0){
delete array[i]['date'];
delete array[i]['saved'];
let article = array[i];
await myLoop(i, article);
}
}

async function myLoop(i, article) {
let response = await DBM.saveArticle(article);
console.log('article saved', i);
}

最佳答案

您可以通过递归实现相同的效果。

function loopData(array){
DBM.saveArticle(array[0]).then(() => {
if(array.length > 1) {
loopData(array.slice(1));
}
})
}

此版本的方法采用一个数组,保存第一个元素,然后使用其余元素(如果有)调用自身。

关于javascript - 如何仅在异步命令完成后循环遍历数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62481860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com