@perf-tools/balancer
TypeScript icon, indicating that this package has built-in type declarations

0.3.0 • Public • Published

@perf-tools/balancer

A tool for load balancing within the limit of a single frame and not only.

npm i --save @perf-tools/balancer

Description

Often, need to reduce the load, for example when listening to the onscroll event or take the operation as deferred. Usually, in such a situation we use: debounce and throttle. These are very good tools, but sometimes want more, namely controlling the execution within one frame of the animation or use idle-process.

It is for this created @perf-tools/balancer. You add deferred calls into it, and it controls that their execution does not take more than 13ms, otherwise it moves them to idle-process.


API

  • call — add a deferred call to a balancer
  • debounce — created a debounced function
  • cancel — cancel a deferred call
  • uniqueKey — a factory of unique keys to replacing a deferred call, with the same key
  • Bits — advanced knowledge

call(fn, ctx?, args?, options?): Task

Add a deferred call to a balancer.

  • fn: Function
  • ctx: object
  • args: any[]
  • options: TaskOptions
    • key: TaskUniqueKey
    • flags: numbera bitmask
import {call} from '@perf-tools/balancer';

call(function () {
	// some code
});

debounce<T>(fn, ctx?, args?, options?): T & {cancel(): void}

Created a debounced function

  • fn: Function
  • ctx: object
  • args: any[]
  • options: TaskOptions
    • key: TaskUniqueKey
    • flags: numbera bitmask
import {debounce} from '@perf-tools/balancer';

const handleScroll = debounce(function () {
	// some code
});

// Or boosted (without arguments)
// const handleScroll = debounce(function () {}, null, null, {flags: F_NO_ARGS});

document.addEventListener('scroll', handleScroll, true);

// Anywhere else
handleScroll.cancel(); // cancel a deferred call
document.addEventListener('scroll', handleScroll, true);

cancel(task: Task)

Cancel a deferred call

  • task: Task — the task of a deferred call
import {call, cancel} from '@perf-tools/balancer';

const task = call(function () {
	// some code
});

// Anywhere else
cancel(task);

uniqueKey(name: string): TaskUniqueKey

A factory of unique keys to replacing a deferred call, with the same key

  • name: name — any name (does not affect anything)
import {call, uniqueKey} from '@perf-tools/balancer';

const key = uniqueKey('demo');

call(function () { console.log('One'); }, null, [], {key});
call(function () { console.log('Two'); }, null, [], {key});

// Console output:
//  Two

Bits

  • F_CTX — use free a context
  • F_NO_ARGS — ignore arguments for boost performance a debounced function
  • F_IMPORTANT — even if the task is too heavy, it will not be moved to the idle-process and will continue to run per frame

Development

Package Sidebar

Install

npm i @perf-tools/balancer

Weekly Downloads

4

Version

0.3.0

License

MIT

Unpacked Size

31.8 kB

Total Files

8

Last publish

Collaborators

  • rubaxa