turi Ijrochi < T > = ( yechish : ( natija : T ) => bekor qilish , rad etish : ( xato : noma'lum ) => bekor ) => bekor
sinf Promise < T > { konstruktor ( f : Ijrochi < T > ) {}
keyin < U > ( g : ( natija : T ) => Va'da < U > ) : Va'da < U > {
// ...
}
catch < U > ( g : ( xato : noma'lum ) => Va'da < U > ) : Va'da < U > {
// ...
}
}
Endi bizda to'liq pishirilgan Promise interfeysi mavjud.
o'sha vaqt uchun ilovalar bilan birlashtirib , ushlang . Promise dasturini to'g'ri yozish juda qiyin - agar siz shuhratparast bo'lsangiz va bir necha soat bo'sh vaqtingiz bo'lsa, ES2015 spetsifikatsiyasiga o'ting.Promise ning davlat mashinasi kaput ostida qanday ishlashi kerakligi haqida ma'lumot olish uchun .
Va'dalar asinxron kod bilan ishlash uchun juda kuchli mavhumlikdir. Ular shunday mashhur naqshki, hatto o'zlarining JavaScript (va shuning uchun TypeScript) sintaksisiga ega: async va await . Ushbu sintaksis sizga sinxron operatsiyalar bilan bir xil tarzda asinxron operatsiyalar bilan o'zaro ta'sir o'tkazish imkonini beradi.
K utishni .then uchun til darajasidagi sintaksik shakar sifatida tasavvur qiling . Promise ni kutayotganingizda , buni asinxron blokda qilishingiz kerak . Va .catch o'rniga siz kutishingizni oddiy try / catch blokiga o'rashingiz mumkin.
Aytaylik, sizda quyidagi va'da bor ( nihoyat oldingi bo'limda gapirmadik, lekin u siz o'ylagandek harakat qiladi, keyin ikkalasidan keyin o'q uzadi va o't ochish imkoniyatiga ega bo'ladi):
funktsiyasi getUser() { getUserID ( 18 )
. keyin ( foydalanuvchi => getLocation ( foydalanuvchi ))
. keyin ( joy => konsol . ma'lumot ( "joylashuvni oldim" , joylashuvi ))
. tutish ( xato => konsol . xato ( xato ))
. nihoyat (() => konsol . ma'lumot ( 'joylashuv aniqlandi' ))
}
async va await ga aylantirish uchun avval uni asinxronizatsiya funksiyasiga qo'ying , so'ngra va'da natijasini kuting :
Do'stlaringiz bilan baham: |