1 回答
TA贡献1827条经验 获得超4个赞
这是异步 for..of 循环的正确代码
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接收回调。因此,正确的论点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可以在这里找到
添加回答
举报
