funktsiyasi processCommandFromMainThread (
buyruq : buyruq
) {
switch ( buyruq . turi ) { hol 'sendMessageToThread' : ruxsat bering [ threadID , xabar ] = buyruq . ma'lumotlar
konsol . jurnal ( xabar )
// ...
}
}
Biz har bir buyruq uchun argumentlar bilan birga asosiy ish zarrachasi ishchi ipga yuborishi mumkin bo'lgan barcha mumkin bo'lgan buyruqlar birligini aniqlaymiz.
Bu oddiy uyushma turi. Uzun birlashma turlarini belgilashda quvurlar ( | ) bilan boshlanish bu turlarni o'qishni osonlashtirishi mumkin.
Biz yozilmagan onmessage API orqali yuborilgan xabarlarni qabul qilamiz va ularni qayta ishlashni bizning terilgan processCommandFromMainThread API ga topshiramiz. processCommandFromMainThread asosiy mavzudagi barcha kiruvchi xabarlarni qayta ishlash bilan shug'ullanadi. Bu yozilmagan onmessage API uchun xavfsiz, terilgan oʻram.
Buyruq turi diskriminatsiyalangan birlashma turi bo'lganligi sababli ( 128-betdagi "Ajratilgan birlashma turlari" ga qarang ), biz asosiy mavzu yuborishi mumkin bo'lgan har qanday xabar turini to'liq qayta ishlash uchun kalitdan foydalanamiz.
Keling, tanish EventEmitter- ga asoslangan API orqasida Web ishchilarining qor parchalari API-sini mavhum qilaylik. Shunday qilib, biz kiruvchi va chiquvchi xabarlar turlarining aniqligini kamaytirishimiz mumkin.
Biz NodeJS EventEmitter API ( NPM da voqealar paketi ostida brauzer uchun mavjud ) uchun xavfsiz o‘ramni yaratishdan boshlaymiz:
Import EventEmitter dan "voqealar"
sinf SafeEmitter <
Voqealar uzaytiradi Yozish < PropertyKey , noma'lum [] >
> {
xususiy emitent = yangi EventEmitter chiqarish < K uzaytiradi kaliti Voqealar > (
kanal : K ,
... ma'lumotlar : Voqealar [ K ]
) {
qaytish bu . emitent . chiqarish ( kanal , ... ma'lumotlar )
}
< K _ uzaytiradi kaliti Voqealar > (
kanal : K ,
tinglovchi : (... ma'lumotlar : Voqealar [ K ]) => bekor
) {
Do'stlaringiz bilan baham: |