我有一个我要兑现诺言的情况。承诺基本上是由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,则我将重定向到登录页面。诺言既没有解决也没有被拒绝。
这段代码可以吗,还是有更好的方法来做到这一点?