Полный перехват AJAX ошибок в JavaScript

Промис, который возвращает fetch, завершается с ошибкой, только если произошла ошибка сети. Если же сервер вернул ответ со статусом 404 или 500, то промис будет завершен успешно, но при этом статус ok будет установлен в false.

Давайте перехватим оба типа ошибок:

button.addEventListener('click', function() { let promise = fetch('/ajax.html') .then( response => { if (response.ok) { return response.text(); } else { console.log('плохой статус ответа'); return ''; } }, ).then( text => { console.log(text); } ).catch( error => { console.log(error); } ); });

Сделаем так, чтобы ошибка, связанная с плохим статусом HTTP ответа, также ловилась блоком catch. Для этого прокинем ее дальше через throw:

button.addEventListener('click', function() { let promise = fetch('/ajax.html') .then( response => { if (response.ok) { return response.text(); } else { throw new Error('плохой статус ответа'); } }, ).then( text => { console.log(text); } ).catch( error => { console.log(error); } ); });

Выведите текст страницы, если запрос был успешным, и ошибку, если что-то пошло не так.

enru