Skip to main content
Home

Built and signed on GitHub Actions

This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers
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
100%
Published
a year ago (2.1.1)

@jpwilliams/waitgroup

npm version Test on push Downloads

A tiny version of Golang's WaitGroup for Node.js and the browser with typings, promises, and zero dependencies.

npm install @jpwilliams/waitgroup
import http from "http";
import { WaitGroup } from "@jpwilliams/waitgroup";

async function main() {
  const wg = new WaitGroup();

  const urls = [
    "http://www.golang.org/",
    "http://www.google.com/",
    "http://www.somestupidname.com/",
  ];

  urls.forEach((url) => {
    // Increment the WaitGroup counter
    wg.add(1);
    // Fetch the URL
    http.get(url, () => {
      // Decrement the counter when the GET is complete
      wg.done();
    });
  });

  // Wait for all HTTP fetches to complete
  await wg.wait();
}

main();

For most applications in Node.js, using built-ins like Promise.all will work perfectly, but sometimes this can be a really nice abstraction if the promises you have to keep track of are pretty spread out.

See jpwilliams/waitgroup-deno for a Deno version.

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:@jpwilliams/waitgroup

Import symbol

import * as waitgroup from "@jpwilliams/waitgroup";
or

Import directly with a jsr specifier

import * as waitgroup from "jsr:@jpwilliams/waitgroup";

Add Package

pnpm i jsr:@jpwilliams/waitgroup
or (using pnpm 10.8 or older)
pnpm dlx jsr add @jpwilliams/waitgroup

Import symbol

import * as waitgroup from "@jpwilliams/waitgroup";

Add Package

yarn add jsr:@jpwilliams/waitgroup
or (using Yarn 4.8 or older)
yarn dlx jsr add @jpwilliams/waitgroup

Import symbol

import * as waitgroup from "@jpwilliams/waitgroup";

Add Package

npx jsr add @jpwilliams/waitgroup

Import symbol

import * as waitgroup from "@jpwilliams/waitgroup";

Add Package

bunx jsr add @jpwilliams/waitgroup

Import symbol

import * as waitgroup from "@jpwilliams/waitgroup";