Publishing Common Events

When to Use

You can use publish() to publish a custom common event, which can carry data for subscribers to parse and process.

NOTE

Subscribers can receive sticky common events that have been sent. However, they must subscribe to common events of other types before receiving them. For details about subscription, see Subscribing to Common Events.

Available APIs

For details about the APIs, see API Reference.

API Description
publish(event: string, callback: AsyncCallback) Publishes a common event.
publish(event: string, options: CommonEventPublishData, callback: AsyncCallback) Publishes a common event with given attributes.

Publishing a Common Event That Does Not Carry Information

Common events that do not carry information can be published only as unordered common events.

  1. Import the commonEventManager module.

    import commonEventManager from '@ohos.commonEventManager';
    import Base from '@ohos.base';
    
  2. Pass in the common event name and callback, and publish the event. In this example, the custom_event event is published.

    // Publish a common event.
    commonEventManager.publish("custom_event", (err: Base.BusinessError) => {
        if (err) {
            console.error(`[CommonEvent] PublishCallBack err=${JSON.stringify(err)}`);
        } else {
            console.info(`[CommonEvent] Publish success`);
        }
    });
    

Publishing a Common Event That Carries Information

Common events that carry information can be published as unordered, ordered, and sticky common events, which are specified by the isOrdered and isSticky fields of CommonEventPublishData.

  1. Import the commonEventManager module.

    import commonEventManager from '@ohos.commonEventManager';
    import Base from '@ohos.base';
    
  2. Pass in the common event name and callback, and publish the event.

    // Attributes of a common event.
    let options: commonEventManager.CommonEventPublishData = {
        code: 1, // Result code of the common event.
        data: "initial data", // Result data of the common event.
    }
    
  3. Pass in the common event name, attributes of the common event, and callback, and publish the event.

    // Publish a common event.
    commonEventManager.publish("custom_event", options, (err: Base.BusinessError) => {
        if (err) {
            console.error('[CommonEvent] PublishCallBack err=' + JSON.stringify(err));
        } else {
            console.info('[CommonEvent] Publish success')
        }
    });