A wrapper function for `setInterval()`, `setTimeout()` and `requestAnimationFrame()` that uses `AbortSignal()` as cancellation strategy
npm install signaltimersetInterval(), setTimeout() and requestAnimationFrame() that uses AbortSignal() as cancellation strategy``bash`
npm install signaltimer
`js
import { setSignalInterval, setSignalTimeout } from 'signaltimer';
const controller = new AbortController();
setSignalInterval(() => {
console.log('Hello');
}, controller.signal, 1000);
setSignalTimeout(() => {
console.log('Hello');
}, controller.signal, 1000);
`
`tssetInterval()
/**
* A wrapper with support for AbortSignal`
*
* MDN Reference
*/
function setSignalInterval(handler: Function, signal?: AbortSignal, ms?: number | undefined, ...args: any[]): CancelTimerFunction
`tssetTimeout()
/**
* A wrapper with support for AbortSignal`
*
* MDN Reference
*/
function setSignalTimeout(handler: Function, signal?: AbortSignal, ms?: number | undefined, ...args: any[]): CancelTimerFunction
`tsrequestAnimationFrame()
/**
* A wrapper with support for AbortSignal`
*
* Note: This function will call the handler immediately, and then call it again on the next animation frame.
*
* MDN Reference
*/
function requestSignalAnimationFrame(handler: FrameRequestCallback, signal?: AbortSignal): CancelAnimationFrame
`tsrequestSignalAnimationInterval()
/**
* @deprecated Use instead
*/
function setAnimationInterval(handler: Function, signal?: AbortSignal, ms?: number | undefined): CancelTimerFunction
/**
* Similar to setInterval() implementation using a combination of requestAnimationFrame() and setTimeout() with support for AbortSignal`
*
* Features:
* - Accurate over time
* - Updates visually steadily
* - Avoids running in background
* - Otherwise good CPU usage
*
* Github Gist | Youtube
*/
function requestSignalAnimationInterval(handler: Function, signal?: AbortSignal, ms?: number | undefined): CancelTimerFunction
`tsrequestSignalAnimationInterval
/**
* Similar to without the use of requestAnimationFrame(), can be used in a SharedWorker.``
*
* MDN Reference
*
* Further reading:
* Reasons for delays longer than specified
* | Timeouts in inactive tabs
* | Throttling of tracking scripts
* | Late timeouts
*/
function setSignalCounterInterval(handler: Function, signal?: AbortSignal, ms?: number | undefined, ...args: any[]): CancelTimerFunction