Sobes.tech
Junior

Asinxron kodla işləmək üçün hansı üsulları bilirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

  • Callback funksiyaları: Bir funksiyanı başqa bir funksiyaya arqument kimi ötürmək və onun asinxron əməliyyat tamamlandıqdan sonra çağırılması. Bu, "callback hell"-ə səbəb ola bilər.
  • Promisler (Promises): Asinxron əməliyyatın yekunlaşmasını (və ya uğursuzluğunu) və onun nəticə dəyərini təmsil edən obyektlər. Daha strukturlaşdırılmış asinxron idarəetmə təmin edir.
    // Promis istifadəsi nümunəsi
    fetch('/api/data')
      .then(response => response.json()) // Uğurlu cavabın işlənməsi
      .then(data => console.log(data)) // Alınan məlumatların işlənməsi
      .catch(error => console.error('Məlumatların alınmasında xəta:', error)); // Xəta idarəetməsi
    
  • Async/await: Promislər üzərində sintaktik şəkər, asinxron kodu daha sətirli yazmağa imkan verir, onu daha oxunaqlı və asan xətaları tapmağa kömək edir.
    // Async/await istifadəsi nümunəsi
    async function fetchData() {
      try {
        const response = await fetch('/api/data'); // Promisi gözləmək
        if (!response.ok) {
          throw new Error(`HTTP xətası! vəziyyət: ${response.status}`);
        }
        const data = await response.json(); // Promisi gözləmək
        console.log(data);
      } catch (error) {
        console.error('Məlumatların alınmasında xəta:', error); // Xəta idarəetməsi
      }
    }
    fetchData();
    
  • Generatorlər: co kitabxanası ilə və ya əl ilə işləmək üçün istifadə edilə bilər, lakin async/await daha geniş yayılmışdır.

Əsas yanaşmaların müqayisəsi:

Yanaşma Üstünlüklər Dezavantajlar
Callbacks Başlanğıcda sadə "Callback hell", xəta idarəetməsində çətinlik
Promisler Daha yaxşı oxunaqlıq, xəta idarəetməsi Zəncirli əməliyyatlarda çətinlik yarada bilər
Async/await Yüksək oxunaqlıq, sinxron kod kimi görünür Ətraf mühit dəstəyi tələb edir (async/await)