1.0.1 • Published 7 months ago

@opsimathically/deferred v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

deferred

Utility classes for working with the asynchronous deferral pattern. Primarily used in conjunction with asynchronous/callback oriented code that doesn't match promisify callback signatures. It's generally useful for working with arbitrary unusual callback based apis. The Deferred class is a standalone promise/resolve/reject set, whereas the DeferredMap lets you create a map containing an arbitrarily created number of deferrals. The advantage of using the map version is that you can easily track and resolve/reject all waiting deferrals when desired rather than having to track them all individually.

Install

npm install @opsimathically/deferred

Usage

import { Deferred, DeferredMap } from '@opsimathically/deferred';

(async function () {
  // create new deferral map
  const deferred_map = new DeferredMap();

  // create and track a single deferral
  const deferral: Deferred = deferred_map.deferred();

  // wait 500ms before resolving the deferral
  setTimeout(function () {
    deferral.resolve(true);
  }, 500);

  // after the timeout, this promise will resolve with the desired result (true)
  let deferred_result = await deferral.promise;
  console.log(`deferred_result after 500ms wait: ${deferred_result}`);

  // create 500 deferrals
  for (let idx = 0; idx < 500; idx++) deferred_map.deferred();

  // resolve all promises with value (true)
  console.log(
    `Total entries in map before resolving them: ${deferred_map.size}`
  );
  deferred_map.resolveAll(true);
  console.log(
    `Total entries in map after resolving them: ${deferred_map.size}`
  );
})();
1.0.1

7 months ago

1.0.0

8 months ago