我有一个假设,我要回报一个承诺。 这个承诺基本上是由 ajax 请求触发的。
在拒绝承诺时,它会显示一个错误对话框,说明存在服务器错误。
我想要做的是,当响应代码为401时,我既不想解决承诺,也不想拒绝它(因为它已经显示了错误对话框)。我只想重定向到登录页面。
我的代码是这样的:
function makeRequest(ur, params) {
return new Promise(function (resolve, reject) {
fetch(url, params).then((response) => {
let status = response.status;
if (status >= 200 && status < 300) {
response.json().then((data) => {
resolve(data);
});
} else {
if (status === 401) {
redirectToLoginPage();
} else {
response.json().then((error) => {
if (!error.message) {
error.message = constants.SERVER_ERROR;
}
reject({ status, error });
});
}
}
});
});
}
如您所见,如果状态为401,我将重定向到登录页面。这个承诺既没有得到解决,也没有被拒绝。
这个代码可以吗? 还是有更好的方法来完成这个任务?