Run promise-returning & async functions until you end it
Think of it like an async version of while (true) {}.
npm install p-foreverHere we create some numbered fixtures. The createFixture() function returns a Promise.
import pForever from 'p-forever';
pForever(async index => {
index++;
if (index > 100) {
return pForever.end;
}
await createFixture(index);
return index;
}, {initialValue: 0});or
import pForever from 'p-forever';
let index = 0;
pForever(async () => {
index++;
if (index > 100) {
return pForever.end;
}
await createFixture(index);
});Returns a Promise that is fulfilled when function_ returns pForever.end, rejects if any of the promises returned from function_ rejects, or rejects with an AbortError if the signal is aborted.
Type: Function
Receives the previously returned value. If a Promise is returned, it's awaited before calling function_ again.
Type: object
Initial value to pass to function_.
Type: AbortSignal
An AbortSignal to abort the loop from outside.
When aborted, the promise returned by pForever rejects with an AbortError.
import pForever from 'p-forever';
const abortController = new AbortController();
setTimeout(() => {
abortController.abort();
}, 500);
await pForever(async () => {
await someWork();
}, {signal: abortController.signal});Symbol used to end the loop.