Sobes.tech
Middle

Asinxron JavaScript ilə necə işləyirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

JavaScript-də asinxronluq ilə işləyirəm callbacklər, promise-lər və async/await istifadə etməklə.

Callbacklər digər funksiyalara arqument kimi ötürülən və müəyyən bir əməliyyat tamamlandıqdan sonra icra olunan funksiyalardır. Onlar "callback cəhənnəmi"-nə səbəb ola bilər, xüsusən iç-içə istifadə olunduqda.

// Callback nümunəsi
function fetchData(callback) {
  setTimeout(() => {
    callback("Məlumatlar alındı");
  }, 1000);
}

fetchData((data) => {
  console.log(data); // 1 saniyə sonra "Məlumatlar alındı" göstərəcək
});

Promise-lər asinxron əməliyyatın yekunlaşmasını və ya uğursuzluğunu təmsil edən obyektlərdir. Onlar asinxron kod ilə işləmək üçün asanlıq təmin edir, dərin iç-içə olmağı önləyir. Üç vəziyyəti var: pending (gözləmə), fulfilled (başarılı), rejected (rədd edilmiş).

// Promise nümunəsi
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Məlumatlar alındı");
    }, 1000);
  });
}

fetchDataPromise()
  .then((data) => {
    console.log(data); // 1 saniyə sonra "Məlumatlar alındı" göstərəcək
  })
  .catch((error) => {
    console.error("Xəta:", error);
  });

Async/await promise-lər üzərində sintaktik şəkərdir və asinxron kodu daha oxunaqlı edir, sanki sinxron kimi görünür. async ilə işarələnmiş funksiya həmişə promise qaytarır. await operatoru yalnız async funksiyalar daxilində istifadə oluna bilər və promise həll olunana qədər icraatı dayandırır.

// Async/await nümunəsi
async function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Məlumatlar alındı");
    }, 1000);
  });
}

async function processData() {
  try {
    const data = await fetchDataAsync();
    console.log(data); // 1 saniyə sonra "Məlumatlar alındı" göstərəcək
  } catch (error) {
    console.error("Xəta:", error);
  }
}

processData();

API sorğuları ilə işləyərkən async/await-dən çox istifadə edirəm, çünki bu ən rahat və oxunaqlı yoldur. Bir neçə asinxron əməliyyatı paralel şəkildə yerinə yetirmək üçün Promise.all() və ya Promise.allSettled() istifadə edirəm.

Event loop-u istifadə edərək asinxron kodun icra ardıcıllığını, mikro tapşırıqları və makro tapşırıqları başa düşürəm.