Skip to main content
Home

Built and signed on GitHub Actions

Queue for your project.

This package works with Node.js, Deno, Bun, BrowsersIt is unknown whether this package works with Cloudflare Workers
It is unknown whether this package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
This package works with Bun
This package works with Browsers
JSR Score
76%
Published
8 months ago (0.4.4)

Enqueue task npm npm type definitions jsr

Queue for your project.

Installation

npm install enqueue-task

Usage

Queue

import { queue } from 'enqueue-task'

const delay = (milliseconds: number) =>
	new Promise((resolve) => setTimeout(resolve, milliseconds))

const task1 = async () => {
	await delay(5000)
	console.log('Task 1')
}
const task2 = async () => {
	await delay(3500)
	console.log('Task 2')
}
const task3 = async () => {
	await delay(4000)
	console.log('Task 3')
}

queue.enqueueTask(task1)
queue.enqueueTask(task2)
queue.enqueueTask(task3)

Console output

'Task 1' // After 5 seconds
'Task 2' // After 8.5 seconds
'Task 3' // After 12.5 seconds

Custom queue

import { createQueue } from 'enqueue-task'
const myQueue = createQueue()

Return value

const task4 = async () => {
	await delay(1000)
	return 3.14159265358979
}
const result4 = await queue.enqueueTask(task4)
console.log(result4) // 3.14159265358979

Group helper

import { getQueueGroup } from 'enqueue-task'

getQueueGroup('apples').enqueueTask(task1)
getQueueGroup('apples').enqueueTask(task2)
getQueueGroup('pears').enqueueTask(task3)

Console output

'Task 3' // After 4 seconds
'Task 1' // After 5 seconds
'Task 2' // After 8.5 seconds

Custom get queue group

import { createGetQueueGroup } from 'enqueue-task'
const myGetQueueGroup = createGetQueueGroup()

Dismiss pending tasks

All dismissed tasks will throw an instance of DismissError.

queue.dismissPendingTasks()

Tip: ignore dismiss errors

queue.enqueueTask(task1).catch((error) => {
	if (error instanceof DismissError) {
		return
	}
	throw error
})

Development

See it in action:

npm ci
npm run build
npm test
Built and signed on
GitHub Actions

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@onset/enqueue-task

Import symbol

import * as enqueue_task from "@onset/enqueue-task";
or

Import directly with a jsr specifier

import * as enqueue_task from "jsr:@onset/enqueue-task";

Add Package

pnpm i jsr:@onset/enqueue-task
or (using pnpm 10.8 or older)
pnpm dlx jsr add @onset/enqueue-task

Import symbol

import * as enqueue_task from "@onset/enqueue-task";

Add Package

yarn add jsr:@onset/enqueue-task
or (using Yarn 4.8 or older)
yarn dlx jsr add @onset/enqueue-task

Import symbol

import * as enqueue_task from "@onset/enqueue-task";

Add Package

npx jsr add @onset/enqueue-task

Import symbol

import * as enqueue_task from "@onset/enqueue-task";

Add Package

bunx jsr add @onset/enqueue-task

Import symbol

import * as enqueue_task from "@onset/enqueue-task";