Chefranov
@Chefranov
Новичок

Как прервать fetch?

Подскажите, как не пускать в второй then если в первом получили определенный статус?
Код
fetch('https://example/api', options)
    .then(function (response) {
        console.log(response)
        if (response.status === 200) {
            console.log('Успешное подключение к API')
            return response.json();
        } else if (response.status === 300) {
            console.log('В очереди');
        } else {
            // здесь прервать fetch и не пускать в следующий then
            console.log('Ошибка', response);
        }

    })
    .then(function (data) {
        // to do something
    })
    .catch((error) => {
        console.log('Ошибка подключения');
        console.log(error)
    });
  • Вопрос задан
  • 337 просмотров
Решения вопроса 3
@RidgeA
`throw new SomeError()`
Ответ написан
Комментировать
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
} else {
        // здесь прервать fetch и не пускать в следующий then
        throw new Error(response)
}
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега JavaScript
function todoSmth() {}

try {
  const response = await fetch("https://example/api");

  if (response.status === 200) {
    const json = await response.json();
    todoSmth();
  } else if (response.status === 300) {
    console.log('В очереди');
    todoSmth();
  } else {
    console.log('Ошибка', response);
  }
  
}
catch (err) {
  console.error(error);
}


Либо возвращай объект, где будут данные и статус, а во втором then решай что делать.

https://javascript.info/promise-chaining
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы