Sobes.tech
Middle

Niyə asinxron funksiya göstərilən tipi dərhal geri qaytarmır?

sobes.tech Süni İntellekt

AI-dan cavab

Flutter/Dart-də asinxron funksiya göstərilən tipi dərhal qaytarmır, çünki o vaxt ala biləcək əməliyyat yerinə yetirir (məsələn, şəbəkə sorğusu, fayl oxuma). Əməliyyat tamamlanana qədər icra axını bloklamamaq üçün, asinxron funksiya dərhal Future qaytarır.

Future potensial dəyər və ya səhv təmsil edən obyekt olub, gələcəkdə mövcud olacaq. Bu, əməliyyatın tamamlanacağına söz verir və baş verdikdə, nəticə ya göstərilən tipdə dəyər, ya da səhv olacaq.

Future istifadə etməklə, əsas icra axını (əsas izolyator) digər tapşırıqları işləməyə davam edə bilər, asinxron əməliyyatın tamamlanmasını gözləmədən. Əməliyyat tamamlandıqda, Future bunu bildirir və qeydiyyatdan keçmiş kod (məsələn, .then() və ya await) nəticəni işləyə bilər.

Nümunə:

Future<String> fetchData() async {
  // Uzun əməliyyatın simulyasiyası
  await Future.delayed(Duration(seconds: 2));
  return "Məlumatlar alındı!";
}

void main() {
  print("Başlanğıc");
  fetchData().then((data) {
    print(data); // Future tamamlandıqdan sonra icra olunur
  });
  print("Son"); // Dərhal icra olunur, fetchData gözlənilmir
}

Bu kodun çıxışı:

Başlanğıc
Son
Məlumatlar alındı!

Bu, bloklamayan davranışı göstərir. Əgər fetchData dərhal String qaytarsa idi, proqram 2 saniyə bloklanar və "Son" çap olunmazdı. Future belə bloklamanın qarşısını almağa imkan verir.