Skip to content

Class: IntervalRunner<TResult, TArgs>

Defined in: packages/rx/src/IntervalRunner.ts:77

Param

task function to be executed periodically

Param

arguments to be supplied to the task function.

Param

timer delay in milliseconds.

Param

true (default): will use setTimeout and will delay until execution is completed. This will ensure, in case the current execution takes longer, the following execution will not occur until current one is done and the interval delay is passed.

false: will use setInterval and the delay time to execute task will not affected. This may cause unwanted issues if the execution takes longer than the interval delay time. Use with caution.

Default: true

Param

(optional) if true, will pre-execute task before starting the timer.

Default: true

Examples

Execute a function sequentially

Counting time will not start until function execution ends, maintaining the delay betweeen end of execution consistent.

typescript
import fetch from '@superutils/fetch'
import { IntervalRunner } fro '@superutils/rx'

const runner = new IntervalRunner(
    fetch.get,
	   ['[DUMMYJSON-DOT-COM]/products'],
    2000,
 )
runner.start(result => console.log({ result }))

Execute a function at without enforcing sequential execution.

Will start counting time even if function execution is unfinied, maintaining the delay betweeen start of execution consistent.

typescript
import fetch from '@superutils/fetch'
import { IntervalRunner } fro '@superutils/rx'

const runner = new IntervalRunner(
  fetch.get,
	 ['[DUMMYJSON-DOT-COM]/products'],
  2000,
  false,
 )
runner.start(result => console.log({ result }))

Type Parameters

TResult

TResult = unknown

TArgs

TArgs extends unknown[] = unknown[]

Constructors

Constructor

new IntervalRunner<TResult, TArgs>(taskFn, taskArgs, intervalMs, sequential, preExecute): IntervalRunner<TResult, TArgs>

Defined in: packages/rx/src/IntervalRunner.ts:94

Parameters

taskFn

(...args) => TResult | Promise<TResult>

taskArgs

TArgs

intervalMs

number | BehaviorSubject<number>

sequential

boolean = true

preExecute

boolean = true

Returns

IntervalRunner<TResult, TArgs>

Properties

intervalMs$

readonly intervalMs$: BehaviorSubject<number>

Defined in: packages/rx/src/IntervalRunner.ts:89


lastResult

lastResult: TResult | undefined

Defined in: packages/rx/src/IntervalRunner.ts:82


minIntervalMs

minIntervalMs: number = 1000

Defined in: packages/rx/src/IntervalRunner.ts:83


preExecute

readonly preExecute: boolean = true

Defined in: packages/rx/src/IntervalRunner.ts:99


sequential

readonly sequential: boolean = true

Defined in: packages/rx/src/IntervalRunner.ts:98


taskArgs

readonly taskArgs: TArgs

Defined in: packages/rx/src/IntervalRunner.ts:96


taskFn()

readonly taskFn: (...args) => TResult | Promise<TResult>

Defined in: packages/rx/src/IntervalRunner.ts:95

Parameters

args

...TArgs

Returns

TResult | Promise<TResult>

Methods

executeOnce()

executeOnce(): Promise<TResult | undefined>

Defined in: packages/rx/src/IntervalRunner.ts:152

Execute the task function regardless of the interval runner state

Returns

Promise<TResult | undefined>


isStarted()

isStarted(): boolean

Defined in: packages/rx/src/IntervalRunner.ts:156

Check if interval is running

Returns

boolean


restart()

restart(resetRunCount): boolean

Defined in: packages/rx/src/IntervalRunner.ts:165

Restart interval

Parameters

resetRunCount

boolean = false

(optional) whether to reset run count

Returns

boolean

indicates whether restart was successful


start()

start(onResult, onBeforeExec?): boolean

Defined in: packages/rx/src/IntervalRunner.ts:182

Parameters

onResult

OnResultType<TResult>

onBeforeExec?

onBeforeExecType

Returns

boolean

indicates whether starting interveral waa successful


stop()

stop(resetRunCount): IntervalRunner<TResult, TArgs>

Defined in: packages/rx/src/IntervalRunner.ts:223

Stop interval runner

Parameters

resetRunCount

boolean = false

(optional) whether to reset the run counter

Returns

IntervalRunner<TResult, TArgs>