[英]Sequential axios requests in a loop
I need to make 4 consecutive axios requests to the server in order to successfully upload a file.我需要向服务器发出 4 个连续的 axios 请求才能成功上传文件。 One file loads correctly.一个文件正确加载。 Problems arise with many files.许多文件都会出现问题。 How can I best load each file sequentially in a loop?我怎样才能最好地循环加载每个文件?
function uploadFile (item, index) {
DataService.getUploadform(...).then(response => {
...
DataService.postUploadForm(...).then(response => {
...
DataService.getUploadFinish(...).then(responseUploadFinish => {
...
DataService.getDowloadLink(...).then(responseDowloadLink => {
//End
}).catch(error => {
//do something
})
}).catch(error => {
//do something
})
}).catch(error => {
//do something
})
}).catch(error => {
//do something
})
}
// hook that initializes file uploads
useUpdateEffect(() => {
validFiles.forEach((file, index) => {
uploadFile(file,index)
})
}, [uploadSession]);
If it has to be sequential and your server cant handle multiple uploads at the same time then you need to await your promise DataService.getUploadform()
.如果它必须是连续的并且您的服务器不能同时处理多个上传,那么您需要等待您的承诺DataService.getUploadform()
。
Note: this will take significantly longer.注意:这将花费更长的时间。
// add async signature
async function uploadFile (item, index) {
return await DataService.getUploadform(...).then(response => {
...
DataService.postUploadForm(...).then(response => {
...
DataService.getUploadFinish(...).then(responseUploadFinish => {
...
DataService.getDowloadLink(...).then(responseDowloadLink => {
//End
}).catch(error => {
//do something
})
}).catch(error => {
//do something
})
}).catch(error => {
//do something
})
}).catch(error => {
//do something
})
}
useUpdateEffect(() => {
(async () => {
for(let i = 0; i < validFiles.length; i++) await uploadFile(file,i)
})()
}, [uploadSession]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.