Asinxronizatsiyaga kirish va Future — zamonaviy dasturlashning muhim tushunchasi. Ba’zi amallar vaqt talab qiladi: serverdan ma’lumot olish, fayl o’qish, ma’lumotlar bazasiga so’rov. Agar dastur ular tugashini kutib turaversa, foydalanuvchi qotib qolgan ilovani ko’radi. Asinxron dasturlash bu muammoni hal qiladi.
Future — kelajakda tayyor bo’ladigan qiymatni ifodalaydigan obyekt. U “hozir emas, biroz keyin natija keladi” degan va’dani bildiradi.
Muammo: kutish
Tasavvur qiling, serverdan ma’lumot olish 3 soniya vaqt oladi. Sinxron dasturda butun ilova shu 3 soniya qotib qoladi. Asinxron dasturda esa dastur boshqa ishlarni davom ettiraveradi va ma’lumot tayyor bo’lganda uni oladi. Aynan shu farq zamonaviy ilovalarni “jonli” qiladi.
Future — kelajakdagi qiymat
Future — hali tayyor bo’lmagan, kelajakda keladigan qiymat. Future.delayed bilan kechikishni namoyish qilamiz:
void main() {
print("Boshlandi");
Future.delayed(Duration(seconds: 2), () {
print("2 soniyadan keyin");
});
print("Tugadi");
}
Boshlandi
Tugadi
2 soniyadan keyin
Diqqat tartibga: “Tugadi” “2 soniyadan keyin” dan oldin chiqdi. Dastur Future ni kutib turmadi — u boshqa kodni davom ettirdi, Future esa 2 soniyadan keyin bajarildi. Bu asinxronlikning mohiyati.
then — natijani olish
Future tayyor bo’lganda natijani then orqali olamiz:
Future<String> malumotOl() {
return Future.delayed(Duration(seconds: 1), () => "UzbekDevs ma'lumoti");
}
void main() {
print("So'rov yuborildi");
malumotOl().then((natija) {
print("Keldi: $natija");
});
print("Kutilmoqda...");
}
So'rov yuborildi
Kutilmoqda...
Keldi: UzbekDevs ma'lumoti
then — Future tayyor bo’lganda ishlaydigan funksiya. Ma’lumot 1 soniyadan keyin keldi, dastur esa shu vaqt ichida boshqa kodni bajardi.
Future holatlari
Future uch holatda bo’lishi mumkin. Ularni jadvalda ko’ramiz:
| Holat | Ma’nosi |
|---|---|
| Tugallanmagan | natija hali tayyor emas |
| Tugallangan (qiymat) | muvaffaqiyatli, qiymat bor |
| Tugallangan (xato) | xato bilan yakunlandi |
Xatoni ushlash uchun catchError ishlatiladi — bu keyingi darsda batafsil.
Xulosa
Bu bo’limda asinxronlik tushunchasini, Future — kelajakdagi qiymatni, then bilan natijani olishni va Future holatlarini ko’rib chiqdik. Asinxronlik ilovalarni “jonli” qiladi. Keyingi darsda Future sinfi bilan chuqurroq ishlashga o’tamiz.