# glov-async

> GLOV.js Async Utility Library

Latest version **1.0.5** (published 2026-09-01) · MIT license · 0 weekly downloads

## Install

```sh
npm install glov-async
pnpm add glov-async
yarn add glov-async
bun add glov-async
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 1.0.5 |
| Published | 2026-09-01 |
| First published | 2021-04-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 7.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 0 |
| Author | Jimb Esser |
| Maintainers | jimbly |
| Keywords | glov, glovjs |

## Links

- npm: https://www.npmjs.com/package/glov-async
- Repository: https://github.com/Jimbly/npm-publish
- Homepage: https://github.com/Jimbly/glov-async#readme
- Issues: https://github.com/Jimbly/npm-publish/issues
- npm.io page: https://npm.io/package/glov-async

## Recent versions

- 1.0.5 (latest) — 2026-09-01
- 1.0.4 — 2025-03-21
- 1.0.3 — 2022-08-17
- 1.0.2 — 2022-07-19
- 0.0.2 — 2022-07-18
- 0.0.1 — 2021-04-10

## README

GLOV.js async utility library
=============================

Behavioral differences from other similar libraries:
* Never forces setTimeout/nextTick, so empty lists or synchronous tasks are optimally efficient, creating no inter-generational garbage.
* All parallel async functions (each, eachLimit, parallel, parallelLimit) process every entry and do not return to the final function until all processing is complete, even if some entry errors before then.  This avoids terrible edge-case bugs where the calling code thinks an asynchronous batch has finished executing (because one part of the batch terminated with error), yet some children are still running.

Example API usage (admittedly will all actually run synchronously):
```javascript
const { asyncEach, asyncEachLimit, asyncParallel, asyncParallelLimit, asyncLimiter } = require('glov-async');
// Also valid:
//  const async = require('glov-async');
//  async.each(...), etc

let collection = ['foo', 'bar'];

asyncEach(collection, function (thing, next) {
  console.log(thing);
  next(null, 'baz');
}, function (err, results) {
  console.log('Done', results); // prints Done ['baz', 'baz']
});

asyncEachLimit(collection, 1, function (thing, next) {
  console.log(thing);
  next();
}, function (err) {
  console.log('Done');
});

let tasks = [
  function (next) {
    console.log('thing 1');
    next();
  },
  function (next) {
    console.log('thing 2');
    next();
  },
];

asyncParallel(tasks, function (err) {
  console.log('Done');
});

asyncParallelLimit(tasks, 1, function (err) {
  console.log('Done');
});

let limiter = asyncLimiter(1);
limiter(tasks[0]);
limiter(tasks[1], function (err) {
  console.log('Task 1 finished');
});
console.log('Done');
```

---
_Source: https://npm.io/package/glov-async · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
