Это правильный код для asyn c for..of l oop
async function fetchArchive(arr,state,mailbox){
console.log(1)
if(arr.length === 0){
load_mailbox(mailbox)
}
for await (const elem of arr){
await fetch2(elem);
arr.shift();
console.log({ elem })
fetchArchive(arr,state,mailbox)
}
}
Однако этот код не работает и вызывает бесконечную рекурсию :) Я думаю, что это плохая идея. изменить массив внутри итерации. Также имейте в виду, что then
получает обратный вызов. Итак, аргумент propper для then
:
.then(response=>fetchArchive(respone))
В вашем случае вы не можете передать fetchArchive
в качестве аргумента методу then
, потому что fetchArchive
не возвращает функцию
[ОБНОВЛЕНИЕ]
Это рабочий код со сравнением индексов массива:
const fetchArchive = async (a, s, callback) => {
for (const [index, value] of a.entries()) {
await fetch(index)
// if i is the last item, load mailbox
.then(() => {
if (index == a.length - 1 && callback) {
callback();
}
});
}
};
Документация по entries
Вы можете найти здесь