0.2.0 • Published 1 year ago

@yadah/service-listener v0.2.0

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

Yadah Listener mixin

A mixin for Yadah Service classes adding the registerListeners() method. It provides a standardised way for Service classes to register event handlers.

registerListeners()

Hook for derived classes to register event listeners.

registerListeners() is called during the boot() lifecycle method so access to other services and subsystems is available.

registerListeners() should return synchronously.

import { ServiceListener } from "@yadah/service-listener";
import { Service } from "@yadah/data-manager";

class MyService extends (Service |> ServiceListener(%)) {
  registerListeners() {
    // ensure superclass event listeners are registered
    super.registerListeners();

    // listen for 'hello' events
    this.on("hello", (name) => this.hello(name));
  }

  hello(name) {
    console.log(`Hello ${name}`);
  }
}

// after service boot
dataManager.services.MyService.emit("hello", "world"); // logs "Hello world"

It is common to listen to events from other services:

registerListeners() {
    // ensure superclass event listeners are registered
  super.registerListeners();

  // listen for 'hello' events
  this.on("hello", (name) => this.hello(name));

  // listen for 'hola' events on another service class
  const { OtherService } = this.services;
  OtherService.on("hola", (name) => this.hello(`${name} (OtherService)`));
}

dataManager.services.OtherService.emit("hola", "mundo"); // logs "Hello mundo (OtherService)"