1# Using Emitter for Inter-Thread Communication 2 3 4[Emitter](../../reference/apis-basic-services-kit/js-apis-emitter.md) provides APIs for sending and processing events between threads, including the APIs for processing events that are subscribed to in persistent or one-shot manner, unsubscribing from events, and emitting events to the event queue. 5 6 7To develop the Emitter mode, perform the following steps: 8 9 101. Subscribe to an event. 11 12 ```ts 13 import { emitter } from '@kit.BasicServicesKit'; 14 import { promptAction } from '@kit.ArkUI'; 15 import { hilog } from '@kit.PerformanceAnalysisKit'; 16 17 const TAG: string = 'ThreadModel'; 18 const DOMAIN_NUMBER: number = 0xFF00; 19 ``` 20 ```ts 21 // Define an event with eventId 1. 22 let event: emitter.InnerEvent = { 23 eventId: 1 24 }; 25 26 // Trigger the callback after the event with eventId 1 is received. 27 let callback = (eventData: emitter.EventData): void => { 28 promptAction.showToast({ 29 message: JSON.stringify(eventData) 30 }); 31 hilog.info(DOMAIN_NUMBER, TAG, 'event callback:' + JSON.stringify(eventData)); 32 }; 33 34 // Subscribe to the event with eventId 1. 35 emitter.on(event, callback); 36 promptAction.showToast({ 37 message: JSON.stringify('emitter subscribe success') 38 }); 39 ``` 40 412. Emit the event. 42 43 ```ts 44 import { emitter } from '@kit.BasicServicesKit'; 45 ``` 46 ```ts 47 // Define an event with eventId 1 and priority Low. 48 let event: emitter.InnerEvent = { 49 eventId: 1, 50 priority: emitter.EventPriority.LOW 51 }; 52 53 let eventData: emitter.EventData = { 54 data: { 55 content: 'c', 56 id: 1, 57 isEmpty: false 58 } 59 }; 60 61 // Emit the event with eventId 1 and event content eventData. 62 emitter.emit(event, eventData); 63 ``` 64