npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@charming-choose/deferred-async-value

v0.0.3

Published

DeferredAsyncValue is a custom asynchronous handling class designed to manage the state of async operations (pending, resolved, or rejected), while enabling the registration of callback functions for both successful and failed outcomes.

Downloads

1

Readme

DeferredAsyncValue

Overview

The DeferredAsyncValue class is a custom utility designed for managing asynchronous operations in JavaScript, providing a flexible way to handle success and failure scenarios with a promise-like interface. It introduces a more controlled mechanism to deal with asynchronous workflow, especially useful when you need fine-grained control over when and how callbacks are invoked after an asynchronous operation completes.

Key Features

  • Deferred Execution: Allows deferring the resolution or rejection of an asynchronous operation until needed.
  • Custom Default Values: Supports specifying default values for successful results or reasons for failure.
  • Callback Management: Automatically manages and executes registered success or failure callbacks.
  • Promise Compatibility: Exposes a result property that behaves like a Promise, facilitating chaining and error handling.

Usage

Installation

  • Install using npm or yarn:
npm install @charming-choose/deferred-async-value
# or
yarn add @charming-choose/deferred-async-value

Basic Usage

import DeferredAsyncValue from '@charming-choose/deferred-async-value';

// Create an instance of DeferredAsyncValue
const asyncValue = new DeferredAsyncValue();

// Register callbacks
asyncValue.result.then(data => {
  console.log('Success:', data);
}).catch(error => {
  console.log('Failed:', error);
});

// Simulate an async operation completion
setTimeout(() => {
  asyncValue.success('Operation completed!');
}, 2000);

Methods & Properties

  • result: A Promise that resolves or rejects based on the state of the async operation.
  • success(arg?): Call this method to mark the operation as successful, optionally passing a value.
  • fail(reason?): Call this method to mark the operation as failed, optionally passing a reason.
  • reset: Resets the DeferredAsyncValue object to its initial state.

Types & Interfaces

  • DeferredStatus: Represents the three states of an async operation ('resolved', 'rejected', 'pending').
  • Callback: A type representing a generic callback function accepting an optional argument of type T.
  • TypeDeferredAsyncValue<T, U>: An interface describing the structure of the DeferredAsyncValue instance.

Why Use DeferredAsyncValue?

This class is particularly beneficial in scenarios where you want more control over the timing of resolving or rejecting promises, especially in complex async flows where you may need to wait for multiple dependencies or handle UI updates more precisely.

Compatibility

Compatible with modern JavaScript environments supporting ES6 and TypeScript.

Contribution

Feel free to contribute improvements or report issues related to this utility class.

License

MIT License. See LICENSE file for more details.