【发布时间】:2016-08-12 14:33:18
【问题描述】:
我有一个场景,我正在返回一个承诺。 Promise 基本上是由 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,我将重定向到登录页面。承诺既没有解决也没有被拒绝。
这段代码可以吗,还是有更好的方法来完成这个?
【问题讨论】:
标签: javascript ecmascript-6 es6-promise