axios 调用失败时可能出现未处理的承诺拒绝警告
Possible Unhandled Promise Rejection warning when axios call fails
每次我发出的 API 调用中有 504
或 404
时,我都会收到警告:
Possible Unhandled Promise Rejection (id: 12):
ReferenceError: Can't find variable: rej
这是我的编码方式:
function myFunction() {
const fullURL = 'URL_THAT_I_HIT'
const data = { "SOME_ID": ID_VALUE, }
return new Promise((res, rej) => {
try {
axios.post(fullURL, data).then((response) => {
res(response.data)
}).catch((error) => {
rej(error)
alert(error)
})
} catch (error) {
rej(error)
alert(error)
}
})
}
根据我的理解,我正在处理 rej
并且我什至将它包裹起来以便我可以拒绝。下面是我调用 myFunction
的代码
function fetchMyFunctionCall() {
if (res === undefined) {
alert("The call rejected")
} else {
console.log(res)
}
}
它显示错误消息,但我仍然看到警告。那么,如何正确处理 fetchMyFunctionCall
中的拒绝?
我无法重现你对未定义变量的错误,但我认为你可以像下面这样简化你的代码:
function myFunction() {
const fullURL = 'URL_THAT_I_HIT'
const data = {
"SOME_ID": ID_VALUE,
}
return axios.post(fullURL, data).then((response) => {
return response.data
});
}
myFunction().then((data) => {
console.log(data)
}).catch((error) => {
console.log(error)
})
Axios 本身 returns 一个 promise,因此不需要显式返回一个。
每次我发出的 API 调用中有 504
或 404
时,我都会收到警告:
Possible Unhandled Promise Rejection (id: 12): ReferenceError: Can't find variable: rej
这是我的编码方式:
function myFunction() {
const fullURL = 'URL_THAT_I_HIT'
const data = { "SOME_ID": ID_VALUE, }
return new Promise((res, rej) => {
try {
axios.post(fullURL, data).then((response) => {
res(response.data)
}).catch((error) => {
rej(error)
alert(error)
})
} catch (error) {
rej(error)
alert(error)
}
})
}
根据我的理解,我正在处理 rej
并且我什至将它包裹起来以便我可以拒绝。下面是我调用 myFunction
function fetchMyFunctionCall() {
if (res === undefined) {
alert("The call rejected")
} else {
console.log(res)
}
}
它显示错误消息,但我仍然看到警告。那么,如何正确处理 fetchMyFunctionCall
中的拒绝?
我无法重现你对未定义变量的错误,但我认为你可以像下面这样简化你的代码:
function myFunction() {
const fullURL = 'URL_THAT_I_HIT'
const data = {
"SOME_ID": ID_VALUE,
}
return axios.post(fullURL, data).then((response) => {
return response.data
});
}
myFunction().then((data) => {
console.log(data)
}).catch((error) => {
console.log(error)
})
Axios 本身 returns 一个 promise,因此不需要显式返回一个。