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