• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 使用Emitter进行线程间通信
2
3[Emitter](../../reference/apis-basic-services-kit/js-apis-emitter.md)主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。
4
5Emitter的开发步骤如下:
6
71. 订阅事件
8
9   ```ts
10   import { emitter } from '@kit.BasicServicesKit';
11   import { promptAction } from '@kit.ArkUI';
12   import { hilog } from '@kit.PerformanceAnalysisKit';
13
14   const TAG: string = 'ThreadModel';
15   const DOMAIN_NUMBER: number = 0xFF00;
16   ```
17   ```ts
18   // 定义一个eventId为1的事件
19   let event: emitter.InnerEvent = {
20     eventId: 1
21   };
22
23   // 收到eventId为1的事件后执行该回调
24   let callback = (eventData: emitter.EventData): void => {
25     promptAction.showToast({
26       message: JSON.stringify(eventData)
27     });
28     hilog.info(DOMAIN_NUMBER, TAG, 'event callback:' + JSON.stringify(eventData));
29   };
30
31   // 订阅eventId为1的事件
32   emitter.on(event, callback);
33   promptAction.showToast({
34     message: JSON.stringify('emitter subscribe success')
35   });
36   ```
37
382. 发送事件
39   ```ts
40   // 定义一个eventId为1的事件,事件优先级为Low
41   let event: emitter.InnerEvent = {
42     eventId: 1,
43     priority: emitter.EventPriority.LOW
44   };
45
46   let eventData: emitter.EventData = {
47     data: {
48       content: 'c',
49       id: 1,
50       isEmpty: false
51     }
52   };
53
54   // 发送eventId为1的事件,事件内容为eventData
55   emitter.emit(event, eventData);
56   ```