Я создал обещание получать данные с моего сервера, который отлично работает при наличии сетевого подключения.
Я добавил .catch () для отображения элемента DOM, если сервер недоступен.При запуске .catch () работает, и элемент DOM отображается, но он исчезает через 2 секунды.
Я попытался добавить элемент DOM в .catch ().Я также попытался поместить дополнение DOM во внешнюю функцию и вызвать его.Я также попытался передать внешнюю функцию в функцию reject ().Ничего не сработало.
--- Таблица стилей ---
#notice {
width: 100vw;
height: 100vh;
opacity: 0;
animation: fade-in 2s;
background-color:white;
z-index: 60;
display:flex;
align-items: center;
text-align: center;
}
#notice h1 {
font-size: 10vh;
font-family: 'Verdana';
color: black;
}
#notice * {
position: static;
}
--- Javascript ---
getSolvedDeck = () => {
let failed = false;
new Promise((resolve, reject)=>{
let xhr = new XMLHttpRequest;
xhr.open('GET',
"https://mrlesbomar.com/solitaire/cgi-bin/get_solved_deck.php");
xhr.onload = () =>{
if (xhr.status >= 200 && xhr.status < 300) {
resolve(xhr.response);
} else {
reject(xhr.statusText);
}
}
xhr.onerror = () => reject(xhr.statusText);
xhr.send();
}).then(stuff=>{
console.log('Awesomeness');
}).catch(error=>{
//Create status screen
let notice = document.createElement('div');
notice.id = 'notice';
notice.innerHTML = '<h1>Error Message</h1><br/>';
document.getElementsByTagName('main')[0].appendChild(notice);
});
}
Ожидаемый результат: после ошибки Promise экран заполняется добавленным объектом DOM и остается до тех пор, пока пользователь не предпримет действия.Предоставление пользователю возможности прочитать сообщение.
Фактические результаты: объект DOM добавляется к <main>
, заполняет экран и представляет сообщение, но исчезает в течение 2 секунд.
Вопрос: Как я могу сохранить действия, предпринятые в .catch ()?