Title: @wordpress/priority-queue
Published: March 9, 2021
Last modified: April 23, 2026

---

# @wordpress/priority-queue

## In this article

 * [Installation](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#installation)
 * [API](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#api)
    - [createQueue](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#createqueue)
 * [Contributing to this package](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#contributing-to-this-package)

[ Back to top](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#wp--skip-link--target)

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](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#installation)󠁿

Install the module

    ```bash
    npm install @wordpress/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 `@wordpress/babel-preset-default`](https://github.com/WordPress/gutenberg/tree/HEAD/packages/babel-preset-default#polyfill)
in your code._

## 󠀁[API](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#api)󠁿

### 󠀁[createQueue](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#createqueue)󠁿

Creates a context-aware queue that only executes the last task of a given context.

_Usage_

    ```javascript
    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.

## 󠀁[Contributing to this package](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-priority-queue/?output_format=md#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).

First published

March 9, 2021

Last updated

April 23, 2026

Edit article

[ Improve it on GitHub: @wordpress/priority-queue ](https://github.com/WordPress/gutenberg/edit/trunk/packages/priority-queue/README.md)

[  Previous: @wordpress/primitives](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-primitives/)

[  Next: @wordpress/private-apis](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-private-apis/)