@tantumus21

Как правильно обработать неудавшийся fetch?

Столкнулся с такой проблемой: если пытаюсь загрузить данные по заведомо неверному URL, то скрипт останавливается на строке const responseData = await response.json();, и до проверки на response.ok просто не доходит. Но в видео-уроке все работает - создается error, который далее обрабатывается через try/catch. Также в комментариях я не видел и одного сообщения с проблемой как у меня.

async loadList(context) {
  const response = await fetch('somewebsite.com');
  const responseData = await response.json();

  if(!response.ok) {
    const error = new Error(responseData.message || 'не удалось получить данные');
    throw error;
  }


Что я сделал не так? Или с момента выпуска урока работа fetch изменилась?
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 3
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Преверку на response.ok нужно делать ДО того, как попытаться получить данные в response.json()
Ответ написан
vmakhnyuk
@vmakhnyuk
Frontend developer
Оберните в try/catch

async loadList(context) {
try {
  const response = await fetch('somewebsite.com');
  const responseData = await response.json();

  if(!response.ok) {
    const error = new Error(responseData.message || 'не удалось получить данные');
    throw error;
  } catch(e) {...}
}
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
async getJSON(url) {
	try {
		var result = await (await fetch(url)).json();
		console.log('Запрос успешно выполнен:');
		console.dir(result);
		return result;
	}
	catch(err) {
		console.log('Ошибка при выполнении запроса:');
		console.dir(err);
		return false;
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект
22 нояб. 2024, в 03:54
1500 руб./за проект