所以我对行业标准的实现感到困惑。我觉得我现在这样做太不礼貌了
我希望在出现实际错误时显示错误消息,并在服务器返回非成功状态时显示失败消息
这里的问题是,当assignUser()发生实际错误时,它返回错误,这不会触发第一个函数的catch,因此它由else语句处理,并在实际错误时显示失败消息。我试图在assignUser()的catch中使用throw new Error(" Error),但出现了同样的问题。
我的第二个问题是关于(200 >= status <300)
,除了检查状态(可以是200,204…)之外,是否有更简单的方法来检查操作是否成功?
try {
let status = assignUser(user);
if (status >= 200 && status < 300) {
notify.show("message success");
} else {
notify.show("message failure");
}
} catch (e) {
notify.show("message error");
}
export async function assignUser(user) {
try {......
return resp.status;
} catch (e) {
return e;
}
}
我假设assignUser函数正在使用fetch进行api调用。因此,如果你不使用then catch方法来解析promise,那么assignUser函数必须是一个async函数。
async function assignUser(user) {
try {
const jsonRes = await fetch(url);
if(!jsonRes.ok) {
notify.show("message failure");
} else {
notify.show("message success");
const result = await jsonRes.json();
return result;
}
} catch (e) {
notify.show("message error");
}
}
这里不需要另一个函数来检查状态等等而不是用状态码检查,你可以使用响应。好财产。
希望这对你有帮助由于