controllable-resolve

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', () => {
waitResolved().then((value) => {
alert(`do something with value: ${value}`);
});
});
resolveButton.addEventListener('click', () => {
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);
resolve(100);
console.log('2', controllableResolve.waiting);
waitResolved().then((value) => {
console.log('8', `do something with value: ${value}`);
});
console.log('3', controllableResolve.value);
console.log('4', controllableResolve.waiting);
reset();
console.log('5', controllableResolve.value);
console.log('6', controllableResolve.waiting);
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();
resolve(100);
waitResolved();
cancel();
reset();
waitResolved();
reset();
API
createControllableResolve return instance
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
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