1.0.0 • Published 3 years ago

callable-deferred-promise v1.0.0

Weekly downloads
-
License
MPL-2.0
Repository
github
Last release
3 years ago

Callable Deferred Promise

NPM npm semantic-release microbundle

A thin wrapper class to create a callable deferred Promise.

Features

  • Zero-dependency
  • TypeScript support
  • ESM/CJS/UMD support

Example

import CallableDeferredPromise from "callable-deferred-promise"

type Options = { foo: "bar" }
const performSomeAsyncTask = async (
  options?: Options | undefined,
): Promise<void> => {
  // ...
}
const it = {
  resolves: new CallableDeferredPromise<[Options], void>(
    (args: [Options] | undefined) => resolve => {
      // `args` is `undefined` if it wasn't called
      if (args) {
        const [options] = args
        resolve(performSomeAsyncTask(options))
      } else {
        resolve(performSomeAsyncTask())
      }
    },
  ),
}

// use without a call
await it.resolves

// use with a call
const options: Options = { foo: "bar" }
await it.resolves(options)
1.0.0

3 years ago