core3-utils

@wixc3/patterns on Github

Home > @wixc3/patterns > createDisposables

createDisposables() function

Disposables allow adding of disposal async functions, when dispose is called, these functions will be run sequentially

Disposal groups: You can set disposal groups with constraints (before, after) to ensure that disposal groups are disposed in the correct order

within each group disposables are disposed in the reverse order they were added

Signature:

export declare function createDisposables(name: string, initialGroups?: string[]): Disposables;

Parameters

Parameter Type Description
name string
initialGroups string\[\] _(Optional)_

Returns:

Disposables

Example 1

const disposables = createDisposables('sample');
disposables.add(() => console.log('disposable 1'));
disposables.add({dispose: () => console.log('disposable 2')});
disposables.dispose();
// disposable 2
// disposable 1

Example 2

disposal groups

const disposables = createDisposables('sample');
disposables.registerGroup('first', {before: DEFAULT_GROUP});
disposables.registerGroup('last', {after: DEFAULT_GROUP});
disposables.registerGroup('beforeDefault', {before: DEFAULT_GROUP, after: 'first'});
disposables.add(() => console.log('first'), 'first');
disposables.add(() => console.log('beforeDefault'), 'beforeDefault');
disposables.add(() => console.log('last'), 'last');
disposables.add(() => console.log('default'));
disposables.dispose();
// first
// beforeDefault
// default
// last