https://github.com/nickbreaton/create-async-flag
Simple promise utility for separate, but dependent control flow.
https://github.com/nickbreaton/create-async-flag
async-await npm promises
Last synced: about 1 month ago
JSON representation
Simple promise utility for separate, but dependent control flow.
- Host: GitHub
- URL: https://github.com/nickbreaton/create-async-flag
- Owner: nickbreaton
- License: mit
- Created: 2018-07-14T19:09:50.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-07-30T02:46:21.000Z (almost 7 years ago)
- Last Synced: 2024-11-16T09:22:03.266Z (6 months ago)
- Topics: async-await, npm, promises
- Language: TypeScript
- Homepage: https://npm.im/create-async-flag
- Size: 42 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# create-async-flag
Simple promise utility for separate, but dependent control flow. [See example here.](https://stackblitz.com/edit/create-async-flag)
## API
#### `createAsyncFlag()`
> Creates a flag that can be `set`, `unset`, and `wait` upon.
> ```js
> import createAsyncFlag from 'create-async-flag';
>
> const flag = createAsyncFlag();
> ```#### `[flag].wait()`
> Creates a promise that will only resolve once `set`, or resolve immediatly if already `set`.
> ```js
> const flag = createAsyncFlag();
>
> async function run() {
> // ...
> await flag.wait(); // execution will hault until flag is `set`
> // ...
> }
> ```#### `[flag].set()`
> Marks the flag to be immediatly resolved, and to resolve any currently waiting promises.
> ```js
> const flag = createAsyncFlag();
>
> function log() {
> flag.wait().then(() => console.log('one'));
> flag.set();
> flag.wait().then(() => console.log('two'));
> }
>
> log(); // => 'one'
> // => 'two'#### `[flag].unset()`
> Marks a flag to wait until set is called again.
> ```js
> const flag = createAsyncFlag();
>
> async function start() {
> flag.unset();
> await flag.wait();
> return; // will never return, unless `set` is called
> }#### `[flag].isSet()`
> Returns the current state of the flag.
> ```js
> const flag = createAsyncFlag();
>
> flag.isSet(); // => false
> flag.set();
> flag.isSet(); // => true