Sparround

Promise-lər və async/await

JavaScript tək thread-lidir: uzun əməliyyatlar (şəbəkə, fayl, brauzer əmri) icranı bloklamır — nəticə Promise ilə "sonra" qayıdır.

Promise-in 3 vəziyyəti var: pendingfulfilled (uğur) və ya rejected (xəta).

async/await — Promise-lərlə işləməyin müasir, oxunaqlı yolu:

  • async funksiya həmişə Promise qaytarır
  • await Promise-in həllini gözləyir və dəyəri açır
  • Playwright-da demək olar hər əmr Promise qaytarır: await page.click(...), await page.goto(...)

Unudulmuş `await` — avtomatlaşdırmada 1 nömrəli bug. page.click('#save') (await-siz) əmri göndərir, amma bitməsini gözləmir — növbəti sətir paralel işləyir və test flaky olur. Playwright-ın no-floating-promises lint qaydası bunu tutur — layihəyə mütləq əlavə et.

Paralel gözləmə: bir-birindən asılı olmayan Promise-ləri ardıcıl yox, paralel gözlə:

  • Promise.all([p1, p2]) — hamısını gözləyir; biri reject olsa, bütövlükdə reject
  • Promise.allSettled([...]) — hamısının nəticəsini (uğur/xəta qarışıq) qaytarır
  • Promise.race([...]) — ilk bitəni qaytarır (timeout pattern-ləri üçün)

📚 Mənbələr və sənədlər