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.
asyncilə işarələnmiş funksiyalar həmişə promise qaytarır.awaitoperatoru yalnızasyncfunksiyalar 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();