Dart tiliga kirish O'zgaruvchilar va konstantalar Primitiv ma'lumotlar turlari
Download 374.15 Kb.
|
3-mustaqil ish
Kelajak sinfi bilan ishlash
Dart-da asinxron kod yozish uchun asosiy sinf Future sinfidir. Keling, u qanday imkoniyatlarni taqdim etishini ko'rib chiqaylik. Kelajak konstruktorlari Future obyektini yaratish uchun uning konstruktorlaridan birini ishlatishingiz mumkin: Kelajak (FutureOr FutureOr Future.delayed (Duration davomiyligi, [FutureOr Future.error (Ob'ekt xatosi, [StackTrace stackTrace]): sodir bo'lgan xato haqida ma'lumotni o'z ichiga olgan Future ob'ektini yaratadi.
Future.microtask (FutureOr Future.sync (FutureOr Future.value ([FutureOr Ba'zi konstruktorlardan foydalanish. Birinchi konstruktor:
Bu yerda Anonim funksiya Future konstruktoriga uzatiladi, u hech qanday parametrlarni qabul qilmaydi va hech narsani qaytarmaydi, faqat qandaydir xabarni aks ettiradi. Bu yerda anonim funksiya ishlatilsa-da, biz uni to‘liq funksiyaga aylantira olamiz. Konsol chiqishi: Main ends
Nomlangan Future.delayed () konstruktoridan foydalanish shunga o'xshash, faqat ikkinchi parametrdan funktsiyani bajarishga o'tishdan oldin ma'lum vaqtni (birinchi parametr bilan ko'rsatilgan) kutadi:
Future.value () konstruktoridan foydalanish, agar siz Future tarkibidagi qiymatni allaqachon bilsangiz, undan foydalanish mumkin. Ushbu konstruktor, xususan, keshlashdan foydalanadigan veb-xizmatlarni yaratishda foydali bo'lishi mumkin.
Bu holda Future 35 raqamini oladi (garchi u har qanday ob'ekt bo'lishi mumkin). Va keyin dasturda biz kelajakdan bu qiymatni olishimiz mumkin. Xato ob'ekti va ixtiyoriy parametr, iz stekini oladigan Future.error () konstruktoridan foydalanish:
Bunday holda, ArgumentError.notNull ("kirish") ifodasi xato ob'ekti sifatida ishlatiladi, bu kiritish argumenti null bo'lmasligi kerakligini aytadi. Qiymat olinmoqda Haqiqatda, Future tipi umumiy tur yoki umumiy tur bo'lib, u ma'lum bir tur - Future Yuqoridagi holatlardan birini olaylik:
Bu yerda konstruktorga uzatiladigan funksiya hech narsani qaytarmaydi, u faqat konsolga qandaydir xabarni chop etadi. Shuning uchun, haqiqatda, bu erda biz nafaqat Future ob'ektini, balki Future Funktsiyani o'zgartiraylik - endi u satrni qaytarsin: Funktsiya satrni qaytargani uchun Future obyekti String ob'ektini o'z ichiga oladi va Future Xuddi shu narsa boshqa konstruktorlar uchun ham amal qiladi: Qiymatni olish va kelajakni ishlatish Quyidagi misolni ko'rib chiqing: Bu yerda Future konstruktoriga berilgan funksiya satrni qaytaradi, shuning uchun kelajak Future Keyin () usuli qiymat parametrini oladigan qayta qo'ng'iroq funktsiyasidan o'tadi - bu konstruktor bajarilganda qaytariladigan satr bo'ladi. Keyin funksiyaning o'zi ushbu natijaviy qiymatni konsolga chop etadi. Natijada biz quyidagi konsol chiqishini olamiz: Main ends
Xuddi shunday, biz boshqa turdagi qiymatlarni olishimiz mumkin - int, double va boshqalar. Bo'shliq turi bilan nima qilish kerakligi haqida savol tug'ilishi mumkin - bu holda parametr o'rniga chiziqcha ko'rsatilgan: Konsol chiqishi: Main ends
Agar kerak bo'lsa, biz ketma-ket bajariladigan usullarning zanjirlarini yaratishimiz mumkin: Birinchi usuldan funktsiya Future - satrdan natijani oladi va uni konsolga chop etadi. Bundan tashqari, u yangi natijani qaytaradi - masalan, 22 raqami. Ikkinchidan keyin usuli funksiyasida biz Future dan boshlang'ich qiymatni emas, aynan shu raqamni olamiz. Bundan tashqari, har bir keyingi keyingi usuldan funktsiya parametri oldingi so'ngra usuldagi funktsiyaning natijasidir. Konsol chiqishi: Main ends
Qayta ishlashda xatolik Bunday holda, Future konstruktorida biz otish operatori yordamida xatoni yaratishga taqlid qilamiz ("Kutilmagan xato";). Bu yerda xato obyekti sifatida oddiy satr (“Kutilmagan xato”) ishlatiladi – bu catchError funksiyasiga err parametri orqali uzatiladi. Natijada, bu holda, keyin usulidan funktsiya ishlamaydi, lekin catchError funksiyasi yonadi, chunki Futureni bajarishda xatolik yuz berdi. Konsol chiqishi: Ждем получения значения из Future
Ikkinchi va ixtiyoriy parametr sifatida catchError usuli xato ob'ektining ma'lum bir shartga mos kelishini tekshiradigan funktsiyani qabul qiladi va agar xato ob'ekti ushbu shartga javob bersa, u holda true, aks holda false qaytariladi. Agar noto'g'ri qaytarilsa, ya'ni xato ob'ekti shartga mos kelmasa, birinchi parametrdagi funktsiya IJRO EMAS. Keling, bir misolni ko'rib chiqaylik: throw 404 ifodasi xato ob'ekti int bo'lgan 404 raqamini ifodalashini bildiradi. catchError usulida ikkinchi parametr funksiya (err) {return err is int; } xato ob'ektini err parametri orqali oladi va xato ob'ekti int turida ekanligini tekshirish uchun err is int ifodasidan foydalanadi. Agar shunday bo'lsa, u holda rost qaytariladi va (err) {print ("Xato kodi: $ err");} funksiyasi bajariladi. Va bu holda, biz quyidagi konsol chiqishini olamiz: Ждем получения значения из Future
Ammo, agar biz xato yaratishni quyidagicha yozsak: Keyin endi raqam emas, satr uzatiladi, mos ravishda return err is int ifodasi bunday xatolik noto'g'ri qaytariladi va unga ishlov berilmaydi. WhenComplete usuli Konsol chiqishi: Ждем получения значения из Future
Download 374.15 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling