Programming TypeScript


Download 1.81 Mb.
bet157/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   153   154   155   156   157   158   159   160   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

ruxsat bering runWithMatrixProtocol = createProtocol < MatrixProtocol > (
"MatrixWorkerScript.js"
)
ruxsat bering parallel aniqlovchi = runWithMatrixProtocol ( 'determinant' ) parallelDeterminant ([[ 1 , 2 ], [ 3 , 4 ]])
. keyin ( aniqlovchi =>
konsol . log ( determinant ) // -2 )
Ajoyib, a? Biz mutlaqo xavfsiz boʻlmagan narsani – mavzular oʻrtasida oʻtadigan yozilmagan xabarni oldik va soʻrov-javob protokoli bilan toʻliq yozildi. Ushbu protokol yordamida ishlatishingiz mumkin bo'lgan barcha buyruqlar bir joyda ( MatrixProtocol ) yashaydi va bizning asosiy mantiqimiz ( createProtocol ) bizning aniq protokolimizdan ( runWithMatrixProtocol ) alohida yashaydi.
Istalgan vaqtda ikkita jarayon o'rtasida - bitta mashinada yoki tarmoqdagi bir nechta kompyuterlar o'rtasida aloqa o'rnatishingiz kerak bo'ladimi - turdagi xavfsiz protokollar ushbu aloqani xavfsiz qilish uchun ajoyib vositadir. Ushbu bo'lim protokollar qanday muammolarni hal qilish bo'yicha ba'zi sezgilarni rivojlantirishga yordam bergan bo'lsa-da, haqiqiy ilovalar uchun Swagger, gRPC, Thrift yoki GraphQL kabi mavjud vositalarga murojaat qilishni xohlaysiz - umumiy ko'rinish uchun "Typesafe APIs" ga o'ting . ” 210-betda .
NodeJS da: Child jarayonlari bilan
U shbu bo'limdagi misollarni kuzatish uchun NPM dan NodeJS uchun turdagi deklaratsiyalarni o'rnatishni unutmang:
npm install @types/node --save-dev
Type deklaratsiyasidan foydalanish haqida ko'proq ma'lumot olish uchun Java- ga o'ting.
DefinitelyTyped-da tur deklaratsiyasiga ega skript” 245-bet .
NodeJS-dagi turdagi xavfsiz parallelizm brauzerdagi Web Worker ish zarrachalari uchun bo'lgani kabi ishlaydi ( 194-betdagi “Typexavfsiz protokollar” ga qarang ). Xabarlarni uzatish qatlamining o'zi xavfli bo'lsa-da, uning ustida xavfsiz API yaratish oson. NodeJS ning bola jarayoni API quyidagicha ko'rinadi:
// MainThread.ts
import { fork } dan 'child_process' ruxsat bering bola = sanchqi ( './ChildThread.js' )
bola . on ( 'xabar' , ma'lumotlar =>
konsol . info ( 'Bola jarayoni xabar yubordi' , ma'lumotlar ) ) bola . yuborish ({ turi : 'syn' , ma'lumotlar : [ 3 ]})

Biz yangi bola jarayonini yaratish uchun NodeJS-ning fork API-dan foydalanamiz.
on API yordamida bola jarayonidan kiruvchi xabarlarni tinglaymiz . NodeJS bola jarayoni ota-onasiga yuborishi mumkin bo'lgan bir nechta xabarlar mavjud; Bu erda biz faqat "xabar" xabari haqida qayg'uramiz.
bolalar jarayoniga xabar yuborish uchun yuborish API sidan foydalanamiz .
process.on API yordamida asosiy mavzudan kelayotgan xabarlarni tinglaymiz va xabarlarni process.send orqali yuboramiz :
// ChildThread.ts jarayoni . on ( 'xabar' , ma'lumotlar =>
konsol . info ( 'Ota-ona jarayoni xabar yubordi' , ma'lumotlar ) ) jarayoni . yuborish ({ turi : 'ack' , ma'lumotlar : [ 3 ]})

global miqyosda belgilangan jarayonda on API-dan asosiy mavzudan kiruvchi xabarlarni tinglash uchun foydalanamiz .
xabarlarni ota-ona jarayoniga yuborish uchun yuborish API- dan foydalanamiz . Mexanika Web Workers-ga juda o'xshash bo'lgani uchun, men uni NodeJS-da protsesslararo aloqani abstrakt qilish uchun xavfsiz protokolni amalga oshirish uchun mashq sifatida qoldiraman.

Xulosa


Ushbu bobda biz JavaScript-ning voqealar siklining asoslari bilan boshladik va JavaScript-dagi asinxron kodning qurilish bloklari va ularni TypeScript-da qanday xavfsiz tarzda ifodalash haqida munozarani davom ettirdik: qayta qo'ng'iroqlar, va'dalar, async/await va voqea emitentlari . Keyin biz ko'p ish zarralarini ko'rib chiqdik, mavzular o'rtasida (brauzerda va serverda) xabarlarni uzatishni o'rganib chiqdik va mavzular o'rtasida muloqot qilish uchun to'liq protokollarni yaratdik.
7-bobda bo'lgani kabi , qaysi texnikadan foydalanish sizga bog'liq:

  • Oddiy asinxron vazifalar uchun qayta qo'ng'iroqlar iloji boricha sodda.

  • Ketma-ket va parallellashtirilishi kerak bo'lgan murakkabroq vazifalar uchun va'dalar va asinxron / kutish sizning do'stingizdir.

  • Qachonki va'da uni to'xtatmasa (masalan, hodisani bir necha marta yoqayotgan bo'lsangiz), hodisa emitentlariga yoki RxJS kabi reaktiv oqimlar kutubxonasiga murojaat qiling.

  • Ushbu usullarni bir nechta oqimlarga kengaytirish uchun voqea emitentlari, xavfsiz tip protokollari yoki turdagi API-lardan foydalaning (qarang: “Typesafe APIs” 210-bet ).

Xulosa

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   153   154   155   156   157   158   159   160   ...   206




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