Sobes.tech
Junior

Ինչպե՞ս ես վարվում, երբ խոստումը ավարտվում է սխալով (մերժում):

sobes.tech AI

Պատասխան AI-ից

Механізмы апрацоўкі з дапамогай метадаў .catch() або .finally().

.catch() выкарыстоўваецца для апрацоўкі адхіленых прамісаў. Калі прамис паспяхова выконваецца, блок .catch() ігнаруецца.

// Апрацоўка памылкі з дапамогай .catch()
fetch('/api/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Request failed'); // Імітацыя памылкі
    }
    return response.json();
  })
  .then(data => {
    console.log('Data received:', data);
  })
  .catch(error => {
    console.error('Error:', error); // Апрацоўка памылкі тут
  });

.finally() выконваецца незалежна ад таго, скончыўся прамис паспяхова (fulfill) або з памылкай (reject). Ён карысны для ачысткі рэсурсаў або схавання індыкатараў загрузкі.

// Выкарыстанне .finally() для выканання кода пасля завяршэння прамісу
fetch('/api/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Request failed');
    }
    return response.json();
  })
  .then(data => {
    console.log('Data received:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  })
  .finally(() => {
    console.log('Request finished.'); // Гэты код выконваецца заўсёды
  });

Таксама магу выкарыстоўваць канструкцыю try...catch унутры async функцый для апрацоўкі памылак асінхронных аперацый, уключаючы прамісы:

// Апрацоўка памылкі ў async/await з дапамогай try...catch
async function fetchData() {
  try {
    const response = await fetch('/api/data');
    if (!response.ok) {
      throw new Error('Request failed');
    }
    const data = await response.json();
    console.log('Data received:', data);
  } catch (error) {
    console.error('Error:', error); // Апрацоўка памылкі тут
  } finally {
    console.log('Fetch operation finished.'); // Выконваецца заўсёды
  }
}

fetchData();

Выбар метаду залежыць ад кантэксту і патрабаванай логікі апрацоўкі. .catch() — асноўная канструкцыя для рэакцыі на памылкі, а .finally() — для дзеянняў, якія выконваюцца незалежна ад выніку. try...catch у async функцыях забяспечвае больш звыклы сінхронны стыль апрацоўкі памылак.