我试图在main.js
文件上创建一个通用的提取方法,该方法可以处理响应数据和响应代码,并且还可以捕获错误(返回响应错误)并显示错误代码。
例如:-
如果响应代码为500
,则显示错误弹出窗口。
如果响应代码为401
,请转到登录页面
如果响应代码为409
,则显示错误弹出窗口等。
因此,我没有编写提取操作和条件,而是创建了一个通用方法,然后将URL作为参数传递给它。
但是我遇到一个问题,就是我对函数的功能调用没有得到任何响应。
在fee.js
fetch('/api/fee/' + id, {
method: 'GET',
credentials: 'include',
}).then(response => {
if (response.status == 200) {
this.get_fee_list = json.data.fee
}
else if (response.status == 401) {
window.location.replace("/login");
}
else if (response.status == 409) {
this.notAuthorisedModal: true
}
else{
this.showModal: true
}
})
.catch(error => {
showErrorModal: true
})
然后我将其更改为类似main.js
中的波纹管的功能
function fetchData(url){
fetch(url + id, {
method: 'GET',
credentials: 'include',
}).then(response => {
if (response.status == 200) {
return json.data.fee
}
else if (response.status == 401) {
window.location.replace("/login");
}
else if (response.status == 409) {
this.notAuthorisedModal: true
}
else{
this.showModal: true
}
})
.catch(error => {
this.showErrorModal: true
})
}
在fee.js
文件中
this.get_fee_list = fetchData('/api/fee/')
但是当我提醒get_fee_list
时,它显示为未定义。
我使用async
和await
进行了尝试,但是我只能在then
的回调函数中写入第二个main.js
async function commonApiCall(url) {
return await fetch(url, {
method: 'GET',
credentials: 'include'
})
.then(response => response.json())
}
在fee.js
data = commonApiCall('/api/fee_discount/')
data.then(function(json){
this.get_fee_list = json.data.fee;
for (const key in this.get_fee_list) {
const element = this.get_fee_list[key];
element["dataDisabled"] = true
}
this.$forceUpdate()
});
在vue devtools中,我发现get_fee_list
是空数组