Sobes.tech
Junior

Asinxronluq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

JavaScript kontekstində asinxronluq, proqramın əsas icra axınına blok qoymadan vəzifələri yerinə yetirmək qabiliyyətidir. Bu, tətbiqin cavabdeh qalmasını təmin edir, məsələn, şəbəkə sorğuları və ya giriş/çıxış əməliyyatları zamanı.

Əsas anlayışlar və mexanizmlər:

  • Event Loop: JavaScript-də asinxronluğun ürəyidir. Daimi olaraq mesaj növbəsini (Message Queue) yoxlayır və əgər çağrı yığını (Call Stack) boşdursa, vəzifələri növbədən yığına köçürür.

  • Callback funksiyaları: Digər funksiyalara arqument kimi verilən və asinxron əməliyyat tamamlandıqdan sonra çağırılan funksiyalar.

  • Promises: Asinxron əməliyyatın yekunlaşmasını (və ya uğursuzluğunu) və onun nəticə dəyərini təmsil edən obyekt. Bu, "callback hell"-dən qaçmağa və daha oxunaqlı asinxron kod yazmağa imkan verir.

    // Promise nümunəsi
    const myPromise = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("Əməliyyat uğurla tamamlandı!");
      }, 1000);
    });
    
    myPromise
      .then(result => {
        console.log(result); // 1 saniyə sonra göstəriləcək
      })
      .catch(error => {
        console.error(error);
      });
    
  • Async/Await: Promislər üzərində sintaktik şəkər, asinxron kodu daha çox sinxron kimi edir, oxunuşu yaxşılaşdırır və səhv idarəsini sadələşdirir.

    // async/await nümunəsi
    async function fetchData() {
      try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        console.log(data);
      } catch (error) {
        console.error('Məlumatların alınmasında xəta:', error);
      }
    }
    
    fetchData();
    

Mexanizmlərin müqayisəsi:

Mexanizm Təsviri Üstünlüklər Çatışmazlıqlar
Callback funksiyaları Asinxron tapşırıq tamamlandıqdan sonra çağırılan funksiyalar. Sadə və əsas mexanizm. "Callback hell" yaranması mümkündür.
Promises Asinxron əməliyyatın nəticəsini təmsil edən obyekt. Daha yaxşı oxunaqlılıq, səhv idarəsi. Zəncirlərdə hələ də mürəkkəb ola bilər.
Async/Await Promislər üzərində sintaktik şəkər. Kod xətti və anlaşılandır. Maksimum oxunaqlılıq, asan debug. Promislər tələb edir.

Asinxronluq müasir və cavab verən veb tətbiqləri yaratmaq üçün çox vacibdir, API sorğuları kimi uzun müddətli əməliyyatları istifadəçi interfeysini bloklamadan yerinə yetirməyə imkan verir.