Flutter uchun Yangi boshlanuvchilar


Tanitish asinx dasturlash Fyuchers va izolatlar bilan



Download 15,11 Mb.
bet39/115
Sana24.04.2022
Hajmi15,11 Mb.
#580073
1   ...   35   36   37   38   39   40   41   42   ...   115
Bog'liq
Flutter

Tanitish asinx dasturlash Fyuchers va izolatlar bilan


Dart hisoblanadi a bitta ipli dasturlash til, bu bu, hammasi ning the ilova kod yuguradi xuddi shu ipda. Oddiy qilib aytganda, bu shuni anglatadiki, har qanday kod I/U yoki http kabi uzoq vaqt ishlaydigan operatsiyalarni bajarish orqali ip bajarilishini bloklashi mumkin. so'rovlar.
Garchi Dart hisoblanadi bitta ipli, bu mumkin bajarish asinxron operatsiyalar orqali the Fyuchersdan foydalanish . Bundan tashqari, ushbu asinxron operatsiyalarning natijasini ko'rsatish uchun Dart Future -dan foydalanadi async bilan birlashtirilgan ob'ekt va kuting kalit so'zlar. Keling , sezgir dasturni ishlab chiqish uchun ushbu muhim tushunchalarni tushunaylik.

Dart Fyuchers


Kelajak Dartdagi ob'ekt kelajakda taqdim etiladigan qiymatni ifodalaydi. Bu mumkin bo'l ishlatilgan uchun belgi a usul, uchun misol, bilan a kelajak natija; bu bu, a Future ni qaytarish usuli ob'ekt darhol to'g'ri natija qiymatiga ega bo'lmaydi, buning o'rniga, keyinroq vaqt oralig'ida biroz hisoblashdan keyin.
O'ylab ko'ring the quyidagi kod, qayerda biz bor the asosiy funktsiyasi bu qo'ng'iroqlar a uzoq muddatli operatsiya:

Import 'dart:io';


bekor longRunningOperation() { uchun (int i = 0; i < 5; i++) {


uyqu (davomiylik (sekundlar: 1)); chop etish ("indeks: $i");
}
}

asosiy() {


chop etish ("boshlash ning uzoq yugurish operatsiya"); longRunningOperation();
chop etish ("davomi asosiy tanasi");

uchun (int i = 10; i < 15; i++) { uyqu (davomiylik (sekundlar: 1)); chop etish ("indeks dan asosiy: $i");


}

chop etish ("end ning asosiy");


}

Agar siz oldingi kodni bajarsangiz, u asosiy kodni to'xtatganini sezasiz funktsiyani bajarish paytida the longRunningOperation() funktsiyasi hisoblanadi yugurish. Bu hisoblanadi a sinxron barcha kodlarning bajarilishi va u barcha foydalanish holatlarida yaxshi mos kelmasligi mumkin.


Endi, qilaylik demoq bu the longRunningOperation() funktsiyasi hisoblanadi a asinxron funktsiya va asosiy() Davom etish tugashini kutmasdan bajarishni davom ettirishi mumkin:

Import 'dart: async';


Kelajak longRunningOperation() asinx { uchun (int i = 0; i < 5; i++) {


kuting Future.delayed(Davomiylik(sekundlar: 1)); chop etish ("indeks: $i");
}
}

asosiy() { ... } // asosiy funktsiyasi hisoblanadi the bir xil


Biz bor qilingan biroz o'zgarishlar uchun namoyish qilish Qanday Kelajak ishlaydi to'g'ri:


longRunningOperation () funksiya endi asinxronga ega ko'rsatish uchun o'zgartiruvchi bu bu bo'ladi qaytish a Kelajak funktsiyasi va the Kelajak funktsiyasi bo'ladi funktsiyani bajarish oxirida yakunlanadi. Qaytish turi ham Future ekanligini unutmang .
Biz uyquni almashtirdik() Kelajak bilan qo'ng'iroq qilish.kechiktirilgan qo'ng'iroq qiling. Bu ko'rsatish uchun the foydalanish ning the kuting kalit so'z. The kuting kalit so'z ishlaydi
asinx bilan funktsiyalari. Kelajakni chaqirganda funktsiyasi, bizga natijasi kerak bo'lishi mumkin the Kelajak funktsiyasi uchun davom eting ijro. In bu hol, biz istayman uchun davom eting faqat belgilangan kechikishdan keyin chop etish uchun.

Agar siz bajarmoq the Oldingi kod, siz mumkin xabarnoma nimadur g'alati; the chiqish hisoblanadi quyidagicha :


boshlash ning uzoq yugurish operatsiya davom etmoqda asosiy tanasi


indeks dan asosiy: 10 indeks dan asosiy: 11 indeks dan asosiy: 12 indeks dan asosiy: 13 indeks dan asosiy: 14 oxiri ning asosiy
indeks: 0

indeks: 1


indeks: 2
indeks: 3
indeks: 4

Bu emas a bir vaqtda kod qayerda bitta kod amalga oshiradi keyin boshqa kabi oldin; Bu yerga, tartibi qanday o'zgarishlar. Oldingi misolda o'zgarish qachon sodir bo'ladi


the longRunningOperation() funktsiyasi qo'ng'iroqlar kuting ichida boshqa asinx funktsiyasi. Bu yerda, funktsiya to'xtatilgan va bo'ladi faqat kechikishdan keyin davom ettiriladi 1 ikkinchi. dan keyin kechikish, ammo, asosiy funktsiya allaqachon qayta ishlayapti, chunki u endi kutmaydi uzoq operatsiya uchun uchun to'liq, shunday the longRunningOperation() kod bo'ladi bo'l bajarilgan faqat asosiydan keyin funksiya tugadi.
Bir narsa biz mumkin qil hisoblanadi uchun qilish the asosiy() funktsiyasi ichiga a asinx funktsiyasi va kuting longRunningOperation() ning bajarilishi . Shu tarzda, asosiy() await ga qo'ng'iroq qilganimizda funksiya to'xtatiladi longRunningOperation() va faqat amalga oshirilgandan keyin qayta tiklanadi. Bu odatdagi sinxron kod kabi ishlaydi, quyidagicha:
asosiy() asinx {
chop etish ("boshlash ning uzoq yugurish operatsiya");

Download 15,11 Mb.

Do'stlaringiz bilan baham:
1   ...   35   36   37   38   39   40   41   42   ...   115




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish