A simple class to instantiate infinite loops of async functions.
const { LoopyLoop } = require('loopyloop');
const loop = new LoopyLoop(async () => {
// something async here
})
.on('started', () => {})
.on('stopped', () => {})
.on('error', (err) => {})
.start();
const loop = new LoopyLoop(task, opts);
Argument | Description |
---|---|
task |
An async or otherwise Promise -returning function to be executed continuously. |
[opts] |
An optional object of loop options. |
[opts.maxChained] |
The optional maximum number of chained executions within the same tick of the JavaScript event loop. Defaults to 10 . |
The LoopyLoop
class extends EventEmitter
and its instances emit the following events:
Event | Description |
---|---|
started |
Emitted after the loop has started running but before the task runs for the first time. |
stopped |
Emitted after the loop has stopped running. |
error |
Emitted when the Promise returned by task rejects. The rejection's error is provided as the first argument to this event. |
In addition to emitting the error
event, a LoopyLoop
instance will stop running when its task
rejects.
Method | Description |
---|---|
loop.start() |
Starts the loop. |
loop.stop() |
Stops the loop. |
LoopyLoop should be compatible with all modern JS runtimes. Loaders, bundlers,
build systems and import maps may be used to resolve the events
module,
which is native to the Node.js runtime, to any other package or module offering
an alternative implementation of EventEmitter
, as long as basic API
compatibility is maintained. Good examples of alternative implementations are
eventmitter3
and events
.