Ich habe ein Szenario, in dem ich ein Versprechen zurückgebe. Das Versprechen wird im Wesentlichen durch eine Ajax-Anfrage ausgelöst.
Beim Ablehnen des Versprechens wird ein Fehlerdialog angezeigt, in dem ein Serverfehler vorliegt.
Wenn der Antwortcode 401 lautet, möchte ich das Versprechen weder auflösen noch ablehnen (da der Fehlerdialog bereits angezeigt wird). Ich möchte einfach zur Anmeldeseite weiterleiten.
Mein Code sieht ungefähr so aus:
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 });
});
}
}
});
});
}
Wie Sie sehen können, leite ich bei einem Status von 401 zur Anmeldeseite weiter. Das Versprechen wird weder gelöst noch abgelehnt.
Ist dieser Code in Ordnung oder gibt es einen besseren Weg, dies zu erreichen?