Vue.js axios取消在then()中捕获,而不是在catch()中捕获

Vue.js axios取消在then()中捕获,而不是在catch()中捕获,vue.js,file-upload,django-rest-framework,axios,request-cancelling,Vue.js,File Upload,Django Rest Framework,Axios,Request Cancelling,我正在制作一个多上传文件表单 在用户取消时,一旦使用cancel()取消了相应的axios调用,我就会有一种奇怪的行为。我的axios调用在then()中被捕获,而它应该在catch()中被捕获。then()内部的响应返回未定义的 我很难想象如果我在前端部分做错了什么,我想我的呼叫可能缺少一些标题,或者可能是在后端部分 const payload={file,objectId:articleId,contentType:'article'}; const source=axios.CancelT

我正在制作一个多上传文件表单

在用户取消时,一旦使用cancel()取消了相应的axios调用,我就会有一种奇怪的行为。我的axios调用在then()中被捕获,而它应该在catch()中被捕获。then()内部的响应返回
未定义的

我很难想象如果我在前端部分做错了什么,我想我的呼叫可能缺少一些标题,或者可能是在后端部分

const payload={file,objectId:articleId,contentType:'article'};
const source=axios.CancelToken.source();
//要在进程中执行的回调
const onUploadProgress=(事件)=>{
常量百分比=数学舍入((100*event.loaded)/event.total);
此.handleFileUploadProgression(文件{
百分比,
状态:“待定”,
来源:来源,,
});
};
附件服务
.create(有效负载,{onUploadProgress,cancelToken:source.token})
。然后((响应)=>{
//取消响应在这里以“未定义”响应内容结束
})
.catch((错误)=>{
console.log(错误);
//已取消的请求在此处不作为错误读取
if(axios.isCancel(错误)){
console.log('axios请求已取消',错误);
}
});
服务本身定义如下

export const attachmentService={
创建(有效负载、请求选项){
//FormData不能在拦截器中进行去融合,所以它以前在这里就已经完成了。
const formData=new formData();
Object.entries(payload.forEach)([key,value])=>
formData.append(十进制化(键),值),
);
返回api
.post(资源、表单数据、{
标题:{
“内容类型”:“多部分/表单数据”,
},
…请求选项,
})
。然后((响应)=>{
log(响应“已取消的请求在此处回答为“未定义”);
返回响应数据;
})
.catch((错误)=>{
//这里没有抓到(早些时候)
返回错误数据;
});
},
};
取消是在文件对象执行以下操作时调用的

file.cancelSource.cancel('请求已被用户取消');

正如@estus flask在评论中所建议的,问题是我在服务内部发现了错误(太早了)。谢谢大家!

export const articleService={
创建(有效负载、请求选项){
//FormData不能在拦截器中进行去融合,所以它以前在这里就已经完成了。
const formData=new formData();
Object.entries(payload.forEach)([key,value])=>
formData.append(十进制化(键),值),
);
返回api.post(资源、表单数据、{
标题:{
“内容类型”:“多部分/表单数据”,
},
…请求选项,
});
},
};

为什么会抛出错误?这是取消,不是错误。我不明白为什么它会被捕获为一个错误。请您发布您的代码以取消此请求(根据对
变量的实际方法调用)@JeremyThille这是一个错误,它被捕获在axios文档中的catch()中。@MatthewSpence在下面添加了调用!您可能在正确调试已取消的请求时遇到问题,该请求在此处应答,但在此处未被捕获,或者它在以前的某个地方被捕获,包括拦截器。您没有显示什么是
api
。无论如何,Axios中的取消都会导致拒绝并触发
catch
。如果这与您的情况不同,那么问题是特定于您的情况的,这意味着您捕获了取消错误,无论是有意还是无意。请提供可以重现问题的。