Sobes.tech
Junior

როგორ მართავ სიტუაციას, როდესაც ვადა შეცდომით (უარყოფა) დასრულდება?

sobes.tech AI

პასუხი AI-სგან

Методдор менен иштөө .catch() же .finally() аркылуу.

.catch() колдонулат убада (promise) четке кагылган учурда. Эгер убада ийгиликтүү аяктагандан кийин, .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) же каталар менен аяктагандан кийин иштейт. Ал ресурстарды тазалоо же жүктөө көрсөткүчтөрүн жашыруу үчүн пайдалуу.

// Убада аяктагандан кийин кодду иштетүү `.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 функцияларында синхрондуу стили менен каталарды иштетүүгө мүмкүндүк берет.