Javascript 承诺在没有错误时启动 catch 块
Javascript promises catch block initiating when no error
我创建了一个调用如下所示的 api 的函数。我在前端显示来自 setMessage 的消息。出于某种原因,当没有错误时,.catch 块消息在 setMessage() 中闪烁,然后 setMessage() 最终以来自 .then() 的正确消息结束。
我不确定这是为什么。
function handleCoupon(e) {
e.preventDefault();
setMessage("");
setLoading(true);
fetch(`${process.env.NEXT_PUBLIC_SERVER_API}/subscription/coupon/get`, {
method: "POST",
body: JSON.stringify({
appliedCoupon: couponCode.toLowerCase().trim(),
}),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((data) => {
console.log(data);
if (data.coupon === true) {
setMessage(data.message);
setLoading(false);
} else {
setMessage(data.message);
setLoading(false);
}
})
.catch(
(error) => console.log(error.message),
setMessage("Something went wrong, please contact support")
);
}
.catch 仅接受 单个 函数作为参数,而您传递了其中的两个:
(error) => console.log(error.message)
setMessage("Something went wrong, please contact support")
尝试将它们合并为 1 个函数,例如
.catch((error) => {
console.log(error.message);
setMessage("Something went wrong, please contact support");
});
我创建了一个调用如下所示的 api 的函数。我在前端显示来自 setMessage 的消息。出于某种原因,当没有错误时,.catch 块消息在 setMessage() 中闪烁,然后 setMessage() 最终以来自 .then() 的正确消息结束。
我不确定这是为什么。
function handleCoupon(e) {
e.preventDefault();
setMessage("");
setLoading(true);
fetch(`${process.env.NEXT_PUBLIC_SERVER_API}/subscription/coupon/get`, {
method: "POST",
body: JSON.stringify({
appliedCoupon: couponCode.toLowerCase().trim(),
}),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((data) => {
console.log(data);
if (data.coupon === true) {
setMessage(data.message);
setLoading(false);
} else {
setMessage(data.message);
setLoading(false);
}
})
.catch(
(error) => console.log(error.message),
setMessage("Something went wrong, please contact support")
);
}
.catch 仅接受 单个 函数作为参数,而您传递了其中的两个:
(error) => console.log(error.message)
setMessage("Something went wrong, please contact support")
尝试将它们合并为 1 个函数,例如
.catch((error) => {
console.log(error.message);
setMessage("Something went wrong, please contact support");
});