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

controllable-resolve

v0.2.0

Published

![](https://github.com/ZouYouShun/controllable-resolve/actions/workflows/main-merge.yml/badge.svg) ![](https://github.com/ZouYouShun/controllable-resolve/actions/workflows/npm-publish.yml/badge.svg) [![npm](https://img.shields.io/npm/v/controllable-resolv

Downloads

11

Readme

controllable-resolve

npm license

Example

A simple controllable promise resolve let you can control promise when to resolve

Demo

Installation

npm install controllable-resolve

Usage

createControllableResolve

import { createControllableResolve } from 'controllable-resolve';

const controllableResolve = createControllableResolve();
const { waitResolved, resolve } = controllableResolve;

const startButton = document.getElementById('start');
const resolveButton = document.getElementById('resolve');

startButton.addEventListener('click', () => {
  // wait promise resolved
  waitResolved().then((value) => {
    alert(`do something with value: ${value}`);
  });
});

resolveButton.addEventListener('click', () => {
  // resolve that promise when you need
  resolve(100);
});

Once mode

when you use once mode, that can be use like an event center, once that waitResolved be resolved, the promise will be keep and you can get value from our controllableResolve, also the waitResolved will be fulfilled, so that will pass that Promise directly, .then method will be triggered directly.

import { createControllableResolve } from 'controllable-resolve';

const controllableResolve = createControllableResolve<number>({
  once: true,
});
const { waitResolved, resolve, reset } = controllableResolve;

waitResolved().then((value) => {
  console.log('7', `do something with value: ${value}`);
});

console.log('1', controllableResolve.waiting); // true
resolve(100); // will trigger above console.log

console.log('2', controllableResolve.waiting); // false
// that promise.then will be trigger directly
waitResolved().then((value) => {
  console.log('8', `do something with value: ${value}`);
});

// that resolved value be keep, you can use that synchronously.
console.log('3', controllableResolve.value); // 100
console.log('4', controllableResolve.waiting); // true

// clear keep promise and value
reset();
console.log('5', controllableResolve.value); // undefined
console.log('6', controllableResolve.waiting); // falsee

onWaitingChange

onWaitingChange be call before waiting state change.

import { createControllableResolve } from 'controllable-resolve';

const controllableResolve = createControllableResolve({
  onWaitingChange: (state) => {
    console.log(state);
  },
});
const { waitResolved, resolve, reset, cancel } = controllableResolve;

waitResolved(); // onWaitingChange will be triggered with `true`

resolve(100); // onWaitingChange will be triggered with `false`

waitResolved(); // onWaitingChange will be triggered with `true`

cancel(); // onWaitingChange will be triggered with `false`
reset(); // onWaitingChange can be triggered, that inner waiting still be `false`

waitResolved(); // onWaitingChange will be triggered with `true`

reset(); // onWaitingChange will be triggered with `false`

API

createControllableResolve return instance

| field | type | description | | -------------- | ------------------------- | ------------------------------------------------------------------------------------------------ | | waitResolved | (state:boolean) => void | create a wait resolved promise for you can control when to resolve promise | | resolve | (value: T): void | waitResolved promise, this method need be call after waitResolved | | cancel | (): void | cancel waitResolve when you not need wait anymore, this method need be call after waitResolved | | waiting | readonly boolean | is there have promise be waiting | | reset | (): void | when you use once mode, use to clear those keep promise and resolve value. | | value | readonly T \| undefined | when you use once mode, that value be keep inside the promise result |

createControllableResolve options

| field | default | type | description | | ----------------- | ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | ignorePrevious | false | boolean | if that be true, when waitResolved will ignore previous one, | | once | false | boolean | once the waitResolved promise be resolved, that will keep that resolve promise until you call reset method manually. | | onWaitingChange | - | (state:boolean) => void | be triggered when promise waiting state change |

React hook

use-controllable-resolve

Unpkg link