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.
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.
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$
readonlyintervalMs$: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
readonlypreExecute:boolean=true
Defined in: packages/rx/src/IntervalRunner.ts:99
sequential
readonlysequential:boolean=true
Defined in: packages/rx/src/IntervalRunner.ts:98
taskArgs
readonlytaskArgs:TArgs
Defined in: packages/rx/src/IntervalRunner.ts:96
taskFn()
readonlytaskFn: (...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?
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>