p-forever
Version:
Run promise-returning & async functions repeatedly until you end it
77 lines (46 loc) • 1.41 kB
Markdown
# p-forever
> Run promise-returning & async functions until you end it
Think of it like an async version of `while (true) {}`.
## Install
```
$ npm install p-forever
```
## Usage
Here we create some numbered fixtures. The `createFixture()` function returns a Promise.
```js
import pForever from 'p-forever';
pForever(async index => {
index++;
if (index > 100) {
return pForever.end;
}
await createFixture(index);
return index;
}, 0);
```
or
```js
import pForever from 'p-forever';
let index = 0;
pForever(async () => {
index++;
if (index > 100) {
return pForever.end;
}
await createFixture(index);
});
```
## API
### pForever(fn, initialValue?)
Returns a `Promise` that is fulfilled when `fn` returns `pForever.end`, or rejects if any of the promises returned from `fn` rejects.
#### fn(previousValue)
Type: `Function`
Receives the previously returned value. If a `Promise` is returned, it's awaited before calling `fn` again.
#### initialValue
Initial value to pass to `fn`.
### pForever.end
Symbol used to end the loop.
## Related
- [p-times](https://github.com/sindresorhus/p-times) - Run promise-returning & async functions a specific number of times concurrently
- [p-whilst](https://github.com/sindresorhus/p-whilst) - Calls a function repeatedly while a condition returns true and then resolves the promise
- [More…](https://github.com/sindresorhus/promise-fun)