Sobes.tech
Middle

JavaScript-də asinxronluğun prinsipləri haqqında danış.

sobes.tech Süni İntellekt

AI-dan cavab

JavaScript-də asinxronluq prinsipləri, tək ipli icra modelinə əsaslanır; burada vaxt alacaq tapşırıqlar (məsələn, şəbəkə sorğuları, timerlər) əsas icra axını bloklamır, bu da digər əməliyyatların həyata keçirilməsinə imkan verir. Bu, aşağıdakı vasitələrlə həyata keçirilir:

  • Event Loop (Hadisə Döngüsü): Daimi olaraq mesaj növbəsini yoxlayan və ondan tapşırıqları icra edən mexanizm. Asinxron əməliyyat tamamlandıqda, onun callback-i tapşırıq növbəsinə əlavə olunur.
  • Callback funksiyalar: Digər funksiyaya arqument kimi verilən və asinxron əməliyyat tamamlandıqdan sonra icra olunan funksiyalar.
  • Promises (Vədələr): Asinxron əməliyyatın son dəyərini təmsil edən obyektlər; onlar ya uğurlu (fulfilled) ya da rədd (rejected) ola bilər. Asinxron kod ilə işləməkdə asanlıq yaradır və "callback hell"-dən qaçmağa kömək edir.
  • Async/Await: Promises üzərində sintaktik şəkər; bu, asinxron kodu daha oxunaqlı və sinxron şəkildə yazmağa imkan verir. async ilə işarələnmiş funksiyalar 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.

Yanaşmaların müqayisəsi:

Yanaşma Oxunaqlılıq Xəta idarəsi Paralel icra
Callbacks Aşağı Çətin Trivial olmayan
Promises Orta Rahat .all(), .race()
Async/Await Yüksək Rahat (try/catch) Bir az daha mürəkkəb

Promises istifadə nümunəsi:

fetch('/api/data') // Asinxron əməliyyat
  .then(response => response.json()) // Uğurlu işləmə
  .then(data => console.log(data)) // Məlumatların işlənməsi
  .catch(error => console.error('Xəta:', error)); // Xəta idarəsi

Async/Await istifadə nümunəsi:

async function fetchData() {
  try {
    const response = await fetch('/api/data'); // Promise gözlənilir
    const data = await response.json(); // Promise gözlənilir
    console.log(data);
  } catch (error) {
    console.error('Xəta:', error); // Xəta idarəsi
  }
}
fetchData();