New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

controllable-resolve

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

controllable-resolve

![](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

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
2
-50%
Maintainers
1
Weekly downloads
 
Created
Source

controllable-resolve

npm license

Example

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

Demo

  • Demo Website

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

fieldtypedescription
waitResolved(state:boolean) => voidcreate a wait resolved promise for you can control when to resolve promise
resolve(value: T): voidwaitResolved promise, this method need be call after waitResolved
cancel(): voidcancel waitResolve when you not need wait anymore, this method need be call after waitResolved
waitingreadonly booleanis there have promise be waiting
reset(): voidwhen you use once mode, use to clear those keep promise and resolve value.
valuereadonly T | undefinedwhen you use once mode, that value be keep inside the promise result

createControllableResolve options

fielddefaulttypedescription
ignorePreviousfalsebooleanif that be true, when waitResolved will ignore previous one,
oncefalsebooleanonce the waitResolved promise be resolved, that will keep that resolve promise until you call reset method manually.
onWaitingChange-(state:boolean) => voidbe triggered when promise waiting state change

React hook

use-controllable-resolve

Keywords

vanilla-javascript

FAQs

Package last updated on 15 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts