@wordpress/priority-queue
Version:
Generic browser priority queue.
53 lines (31 loc) • 2.06 kB
Markdown
# Priority Queue
This module allows you to run a queue of callback while on the browser's idle time making sure the higher-priority work is performed first.
## Installation
Install the module
```bash
npm install /priority-queue --save
```
_This package assumes that your code will run in an **ES2015+** environment. If you're using an environment that has limited or no support for such language features and APIs, you should include [the polyfill shipped in `/babel-preset-default`](https://github.com/WordPress/gutenberg/tree/HEAD/packages/babel-preset-default#polyfill) in your code._
## API
<!-- START TOKEN(Autogenerated API docs) -->
### createQueue
Creates a context-aware queue that only executes the last task of a given context.
_Usage_
```js
import { createQueue } from '@wordpress/priority-queue';
const queue = createQueue();
// Context objects.
const ctx1 = {};
const ctx2 = {};
// For a given context in the queue, only the last callback is executed.
queue.add( ctx1, () => console.log( 'This will be printed first' ) );
queue.add( ctx2, () => console.log( "This won't be printed" ) );
queue.add( ctx2, () => console.log( 'This will be printed second' ) );
```
_Returns_
- `WPPriorityQueue`: Queue object with `add`, `flush` and `reset` methods.
<!-- END TOKEN(Autogenerated API docs) -->
## Contributing to this package
This is an individual package that's part of the Gutenberg project. The project is organized as a monorepo. It's made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to [npm](https://www.npmjs.com/) and used by [WordPress](https://make.wordpress.org/core/) as well as other software projects.
To find out more about contributing to this package or Gutenberg as a whole, please read the project's main [contributor guide](https://github.com/WordPress/gutenberg/tree/HEAD/CONTRIBUTING.md).
<br /><br /><p align="center"><img src="https://s.w.org/style/images/codeispoetry.png?1" alt="Code is Poetry." /></p>