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