Задать вопрос
Tishaa
@Tishaa

Как запустить проверку? try catch?

помогите пожалуйста, голову опять сломал, тут 2 вопроса.
1. пытался создать костюмную ошибку если условие (!response.ok) выполнялось. Т.е если нету ответа от сервера, создаётся ошибка, НО!!! он всегда отвечал даже когда не было сети, почему?
в итоге я создал ещё один try внутри try и тогда сервер не отвечал и ошибка выводилась в catch который внутри родительского try (вы ещё не сломали голову? хкхах).
седлающий вопрос..
2. как мне сейчас реализовать новую ошибку если сервер отвечает больше 0.5 секунд?
пытаюсь через setTimeout но возникает проблема из 1го вопроса

let app = document.querySelector('#app');
async function as(){

  try{
    try{
      let response = await fetch('https://сервер',{
        method: 'POST'
    })
    app.textContent = 'Стабильно'
    }catch{
      console.log('Нет сети')
    }
    
  }catch(error){
    app.textContent = error.message
  }
}




setInterval(()=>{
  as()
},2000)
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
How to get in catch method in Fetch API when there...
Fetch API: how to determine if an error is a netwo...
Detect Network Failures When Using Fetch

Исходя из Вашего вопроса, это будет выглядеть примерно так:
let response;

async function fetchData(request) {

    try {
        response = await Promise.race([
            fetch(request),
            new Promise((_, reject) => setTimeout(
                () => reject(new Error('Timeout')), 500,  // 0.5 секунды
            )),
        ]);
    }

    catch (e) {

        // Ошибка с таймаутом
        if (e.message === 'Timeout' || e.message === 'Network request failed') {
            console.log('Проблемы с интернетом!');
        }

        // Прочие ошибки
        else {
            throw e;
        }

        return;
    }

    try {
        // Преобразуем результат запроса в json
        console.log(await response.json());
    }

    catch (e) {
        console.log('Ошибка при парсинге json');
    }
}


const request = new Request('https://jsonplaceholder.typicode.com/todos/1', {
    method: 'GET',
});

fetchData(request);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы