# jdefer

> # Install

Latest version **0.2.0** (published 2025-01-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install jdefer
pnpm add jdefer
yarn add jdefer
bun add jdefer
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2025-01-09 |
| First published | 2022-01-16 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 8.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Sang Tran |
| Maintainers | tranvansang |
| Keywords | promise, defer, lazy |

## Links

- npm: https://www.npmjs.com/package/jdefer
- Repository: https://github.com/tranvansang/jdefer
- Homepage: https://github.com/tranvansang/jdefer#readme
- Issues: https://github.com/tranvansang/jdefer/issues
- npm.io page: https://npm.io/package/jdefer

## Alternatives

- [@commercetools/sync-actions](https://npm.io/package/@commercetools/sync-actions.md) — 25.1K weekly downloads
- [cwait](https://npm.io/package/cwait.md) — 21.4K weekly downloads
- [@ledgerhq/hw-app-cosmos](https://npm.io/package/@ledgerhq/hw-app-cosmos.md) — 4.2K weekly downloads
- [@financial-times/o-loading](https://npm.io/package/@financial-times/o-loading.md) — 2.8K weekly downloads
- [fa](https://npm.io/package/fa.md) — 185 weekly downloads

## Recent versions

- 0.2.0 (latest) — 2025-01-09
- 0.1.0 — 2024-11-06
- 0.0.14 — 2023-11-23
- 0.0.13 — 2023-11-23
- 0.0.12 — 2023-11-18
- 0.0.11 — 2023-11-18
- 0.0.10 — 2023-11-18
- 0.0.9 — 2023-07-24
- 0.0.8 — 2023-07-24
- 0.0.7 — 2023-07-23
- 0.0.5 — 2023-07-23
- 0.0.4 — 2023-03-12
- 0.0.3 — 2022-10-04
- 0.0.2 — 2022-01-16
- 0.0.1 — 2022-01-16

## README

# Javascript promise defer library

# Install

```bash
yarn add jdefer
```

# Usage

## Single promise with defer

In 2024: recommended using [`Promise.withResolvers()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers).

```typescript
import makeDefer from 'jdefer'
// or
const makeDefer = require('jdefer')

const defer = makeDefer()

// to reject
defer.reject(new Error('foo'))

// to resolve
defer.resolve('bar')

// to wait
await defer.promise
```

## Broadcast stream

```typescript
import {makeBroadcastStream} from 'jdefer'
// or
const {makeBroadcastStream} = require('jdefer')

const stream = makeBroadcastStream()

// to listen
const removeListener = stream.listen(
	(value) => {
		console.log(value)
	}, {
		onDone() {
			console.log('done')
		},
		onError(error) {
			console.error(error)
		},
	})

// to stop listening
removeListener()

// to broadcast
stream.next('foo')
// to broadcast error
stream.throw(new Error('bar'))
// to broadcast done
stream.done()
// iterate
for await (const value of stream) {
	console.log(value)
}
```

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