Skip to content

`AsyncQueue` is a class for asynchronous queues that allows you to process data in order. It implements the `Symbol.asyncIterator` interface, so it can be used in `for-await-of` loops.

Notifications You must be signed in to change notification settings

ai-zen/async-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AsyncQueue

AsyncQueue is a class for asynchronous queues that allows you to process data in order. It implements the Symbol.asyncIterator interface, so it can be used in for-await-of loops.

Installation

Using npm:

npm install @ai-zen/async-queue

Using yarn:

yarn add @ai-zen/async-queue

Usage

import AsyncQueue from "@ai-zen/async-queue";

// Create an instance of AsyncQueue
const queue = new AsyncQueue<number>();

// Push data into the queue
queue.push(1);
queue.push(2);
queue.push(3);

// Process the queue in a for-await-of loop
async function processQueue() {
  for await (const value of queue) {
    console.log(value);
  }
}

processQueue().catch((error) => {
  console.error("Error processing queue:", error);
});

// Call the done method when the queue processing is complete
queue.done();

API

push(value: T): void

Pushes a value into the queue.

  • value - The value to push into the queue.

done(): void

Indicates that the queue processing is complete and no more values will be pushed.

size: number

Gets the current number of values in the queue.

Exception Handling

If an error occurs while processing the queue, you can use a try-catch block to catch the exception. After catching the exception, you can call the done method to indicate that the queue processing is complete and ensure that no more values are pushed.

async function processQueue() {
  try {
    for await (const value of queue) {
      // Process the data
    }
  } catch (error) {
    console.error("Error processing queue:", error);
    queue.done();
  }
}

Make sure to always handle exceptions while processing the queue to prevent the queue from being left in an incomplete state.

License

MIT License

About

`AsyncQueue` is a class for asynchronous queues that allows you to process data in order. It implements the `Symbol.asyncIterator` interface, so it can be used in `for-await-of` loops.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published