1.5.0 • Published 2 months ago

@aegenet/belt-task-flow v1.5.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

npm version

@aegenet/belt-task-flow

Enables loosely coupled publish/subscribe messaging. Awaiting version with FIFO (first in first out)

💾 Installation

yarn add @aegenet/belt-task-flow@^1.5.0
# or
npm i @aegenet/belt-task-flow@^1.5.0

📝 Usage

TaskFlow

import { TaskFlow, type ITaskFlow } from '@aegenet/belt-task-flow';

const taskFlow: ITaskFlow = new TaskFlow();

const tabs: string[] = [];

taskFlow.subscribe('Something', async () => {
  await delay(200);
  tabs.push('with delay');
});

taskFlow!.subscribe('Something', () => {
  tabs.push('without delay');
});


await taskFlow!.publish('Something');

// tabs => ['with delay', 'without delay']

await taskFlow!.publish('Something');

// tabs => ['with delay', 'without delay', 'with delay', 'without delay']

taskFlow.dispose();

Listener & subscription

import { TaskFlow, type ITaskFlow, TaskFlowListener, taskFlowMethod } from '@aegenet/belt-task-flow';

const taskFlow: ITaskFlow = new TaskFlow();

class ListenToMe extends TaskFlowListener {
    public msg: string[] = [];

    constructor() {
      super(taskFlow!);
    }

    @taskFlowMethod()
    public doIt() {
      this.msg.push('hello');
    }
}

// [...]
const listenToMe = new ListenToMe();

// publish
await taskFlow!.publish('tf.ListenToMe:doIt');
// listenToMe.msg => ['hello']

// [...]
listenToMe.dispose();
taskFlow.dispose();
1.5.0

2 months ago