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