Skip to content
Wraps an async function, and ensures that only last call will ever resolve/reject
TypeScript JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.editorconfig
.gitignore
.prettierrc
.travis.yml
README.md
package.json
rollup.config.js
tsconfig.json
tsconfig.test.json
yarn.lock

README.md

awesome-only-resolves-last-promise

NPM Build Status

Install

npm install --save awesome-only-resolves-last-promise
// or
yarn add awesome-only-resolves-last-promise

Features

  • Wraps an existing async function
  • When calling the wrapped function multiple times consecutively, only the last returned promise will resolve and formerly returned promises will be cancelled (they won't resolve nor reject)

Usage

import { onlyResolvesLast } from 'awesome-only-resolves-last-promise';

const asyncFunction = async (arg: number, arg2: string) => {
  await delay(100);
  return `val ${arg} ${arg2}`;
};

const wrappedAsyncFunction = onlyResolvesLast(asyncFunction);

const promise1 = wrappedAsyncFunction(1, '1');
const promise2 = wrappedAsyncFunction(2, '2');
const promise3 = wrappedAsyncFunction(3, '3');

// promise1 and promise2 will never resolve/reject
// promise3 will resolve in 100ms

Useful as an implementation detail of awesome-debounce-promise.

License

MIT © slorber

Hire a freelance expert

Looking for a React/ReactNative freelance expert with more than 5 years production experience? Contact me from my website or with Twitter.

You can’t perform that action at this time.