【发布时间】:2020-08-06 14:36:31
【问题描述】:
我正在尝试创建一个递归函数,它为给定数组的每个整数发送一个 PUT 请求,并在其末尾调用另一个函数。
function fetchArchive(arr,state,mailbox){
if(arr.length == 0){
load_mailbox(mailbox)
}
for(i of arr){
fetch(`/emails/${arr.shift()}`, {
method: 'PUT',
body: JSON.stringify({
archived: state
})
})
.then(fetchArchive(arr,state,mailbox))
}
}
但它似乎在获取数组的最后一项之前调用了load_mailbox() 函数。
我知道这应该使用async / await 更好地实现。有人可以举个例子来帮助我理解吗?
更新: 事实证明,下面的代码正在运行
async function fetchArchive(a,s,callback){
for(i of a){
await fetch(`/emails/${i}`, {
method: 'PUT',
body: JSON.stringify({
archived: s
})
})
// if i is the last item, load mailbox
.then(() => { if(i==a[a.length-1] && callback) callback()});
}
}
【问题讨论】:
标签: javascript async-await fetch