@nodesuite/defer
TypeScript icon, indicating that this package has built-in type declarations

0.3.32 • Public • Published

nodesuite

@nodesuite/defer

Summary

Simple deferred Promise generator.

Installation

pnpm install @nodesuite/defer

Usage

import { defer } from "@nodesuite/defer"

import { someEventfulEmitter } from "./events"

const { resolve, reject, untilResolved } = defer()


// Define async work...
someEventfulEmitter.on("someEvent", resolve)

// ...or some alternative trigger...
const secondEmitter = new EventEmitter()
secondEmitter.on("secondEvent", resolve)

// ...or abstract resoltion conditons...
class Foo {
	
  #resolve
	#reject
  
	public constructor({ resolve, reject }) {
    this.#resolve = resolve
		this.#reject = reject
	}
  
  public someSuccessFunction() {
    return this.#resolve()
	}
  
  public someFailureFunction() {
    return this.#reject()
	}
  
}

const foo = new Foo({ resolve, reject })

// Reject the master promise...
someEventfulEmitter.on("error", () => foo.someFailureFunction())

// Can await resolution of promise from any source.
await untilResolved()

Package Sidebar

Install

npm i @nodesuite/defer

Weekly Downloads

26

Version

0.3.32

License

ISC

Unpacked Size

190 kB

Total Files

39

Last publish

Collaborators

  • insidium