A simple poll function based on async, await, and an infinite loop.
Links:
Download the ES module file …
curl -O https://raw.githubusercontent.com/kleinfreund/poll/main/dist/esm/poll.mjs
… and import it like this:
import poll from 'poll.mjs';
function fn() {
console.log('Hello, beautiful!');
};
poll(fn, 1000);
Install the node package as a dependency …
npm install --save poll
… and import it like this:
-
CommonJS module
const poll = require('poll').default; function fn() { console.log('Hello, beautiful!'); }; poll(fn, 1000);
-
ES module
import poll from 'poll/dist/esm/poll.mjs'; function fn() { console.log('Hello, beautiful!'); }; poll(fn, 1000);
-
TypeScript module
import poll from 'poll/src/poll'; function fn() { console.log('Hello, beautiful!'); }; poll(fn, 1000);
In order to run the tests, clone the repository and run the following commands:
npm install
npm test
poll(function, delay[, shouldStopPolling])
Parameters:
-
function: Required. A function to be called every
delay
milliseconds. No parameters are passed tofunction
upon calling it. -
delay: Required. The delay (in milliseconds) to wait before calling the function again.
-
shouldStopPolling: Optional. A function indicating whether to stop the polling process. The callback function is evaluated twice during one iteration of the internal loop:
- After the result of the call to
function
was successfully awaited. In other words, right before triggering a new delay period. - After the
delay
has passed. In other words, right before callingfunction
again.
This guarantees two things:
- A currently active execution of
function
will be completed. - No new calls to
function
will be triggered.
- After the result of the call to
Return value:
None.