Vue中 axios 如何实现发送请求后,获取响应结果后,再继续进行下一次的请求
现在项目设计到大文件的切片上传,需要在第一片上传的响应状态时200后,才能进行第二片的上传,依次上传,现在通过循环控制需要上传切片的次数,但是现在点击上传以后,所有的请求全部发出去,
应该怎么样才能实现第一片的上传成功以后再开始下一片的上传呢?
现在代码如下:
代码如下:
let iUpdadeState = 0;
this.testFilesStatus.forEach((item, index) => {
console.log("item", item);
let obj = item[0].listFileSliceInfo[0];
if (obj.strStatus == "none") {
iUpdadeState = 0;
} else {
iUpdadeState = 1;
}
let lSize = this.testFiles[index].file.size;
const sectionSize = 1 * 1024 * 1024;
const sectionTotal = Math.ceil(lSize / sectionSize);
for (let i = 0; i < sectionTotal; i++) {
const startSize = i * sectionSize; // 切片开始位置
const endSize =
i === sectionTotal - 1 ? lSize : (i + 1) * sectionSize;
let fileData = this.testFiles[index].file.slice(startSize, endSize);
if (this.progress) {
let formData = new FormData();
formData.append("file", fileData);
formData.append("iUpdadeState", iUpdadeState);
formData.append("iSlideDocumentId", item[0].iFileId);
formData.append("strFilePath", "");
FileUploadHandler(formData, (spreed) => {
// 总大小
let loaded = 0;
loaded += spreed.loaded;
let sep =
(((loaded / this.testFiles[index].file.total) * 100) | 0) + "%";
this.testFiles[index].file.status = sep;
});
}
}
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这个方法可以改为递归,每次在axios的回调里执行,执行到次数等于sectionTotal就可以了
你这里可以用async/await控制for循环按顺序执行上传方法
把
for
循环体放到async
函数中,看简单案例:利用es6的遍历器,对for循环简化,并实现先获取上一个接口的响应,再决定是否继续执行
// 执行结果
简单点的话,搞个异步迭代器就行了