Skip to content

mdaemon-technologies/process-queue

Repository files navigation

Dynamic JSON Badge Static Badge install size Dynamic JSON Badge Node.js CI

@mdaemon/process-queue, A class for pushing objects to a queue and getting the next object from the queue to be processed

Install

$ npm install @mdaemon/process-queue --save

Node CommonJS

    const ProcessQueue = require("@mdaemon/process-queue/dist/processQueue.cjs");

Node Modules

    import ProcessQueue from "@mdaemon/process-queue/dist/processQueue.mjs";

Web

    <script type="text/javascript" src="/path_to_modules/dist/processQueue.umd.js">

Creating a ProcessQueue

  // Define your item type
  interface MyQueueItem {
    id: string | number;
    // other properties...
  }

  // Create a new ProcessQueue
  const queue = new ProcessQueue<MyQueueItem>();

Adding Items to the Queue

  const item: MyQueueItem = { id: '1', /* other properties */ };
  const added = queue.queueItem(item);
  console.log(added); // true if the item was added, false if it was already being processed

Getting the Next Item

  const nextItem = queue.getNextItem();
  if (nextItem) {
    // Process the item
    // ...
    
    // Mark it as done when finished
    queue.doneProcessing(nextItem.id);
  }

Checking Queue Status

  console.log(queue.length()); // Number of items in the queue
  console.log(queue.busy()); // true if any items are being processed
  console.log(queue.processSize()); // Number of items currently being processed

Removing Items

  const removed = queue.removeFromQueue('itemId');
  console.log(removed); // true if the item was removed, false if it wasn't in the queue

Getting All Queue Items

  const allItems = queue.getQueue();
  console.log(allItems); // Array of all items in the queue

API Reference

  queueItem(item: QueueItem): boolean: Adds an item to the queue.

  getNextItem(): QueueItem | null: Retrieves and removes the next item from the queue.

  isProcessing(id: ItemID): boolean: Checks if an item is currently being processed.
  
  doneProcessing(id?: ItemID): void: Marks an item (or all items if no id is provided) as done processing.

  removeFromQueue(id: ItemID): boolean: Removes an item from the queue.

  length(prop?: string, val?: any): number: Returns the number of items in the queue, optionally filtered by a property value.

  busy(): boolean: Checks if any items are currently being processed.

  processSize(): number: Returns the number of items currently being processed.

  getQueue(processing: boolean = false): QueueItem[]: Returns all items in the queue, optionally moving them to the processing state.

License

Published under the LGPL-2.1 license.

Published by
MDaemon Technologies, Ltd.
Simple Secure Email

https://www.mdaemon.com

About

A queue for processing data objects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published