@gradecam/delay
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

delay

Delay a promise a specified amount of time

Install

$ npm install --save @gradecam/delay

Usage

import delay from '@gradecam/delay';

delay(200)
	.then(() => {
		// Executed after 200 milliseconds
	});

delay(100, 'a result')
	.then(result => {
		// Executed after 100 milliseconds
		// result === 'a result';
	});

Advanced usage

import * as assert from 'assert';
import { delay } from '@gradecam/delay';

// With Node.js >=7.6 and async functions
(async () => {
	bar();

	await delay.resolve(100);

	// Executed 100 milliseconds later
	baz();
})();

// There's also `delay.reject()` which optionally accepts a value and rejects it `ms` later
delay.reject(100, 'foo'))
	.then(x => blah()) // Never executed
	.catch(err => {
		// Executed 100 milliseconds later
		// err === 'foo'
	});

// You can clear the delay by calling `.clear` on the returned promise
(async () => {
	const delayedPromise = delay.resolve(1000);
	setTimeout(() => {
		delayedPromise.clear();
	}, 500);
	await delayedPromise;
})();

// If you want to cancel (reject) the promise then call `.clear` with an argument other than `undefined`.
(async () => {
	const delayedPromise = delay.resolve(1000, 'Successfully delayed.');
	setTimeout(() => {
		delayedPromise.clear(new Error('cancelled'));
	});
	try {
		await delayedPromise;
		assert.fail('should have rejected the promise.');
	} catch (err) {
		assert.equal(err.message, 'cancelled');
	}
})();

API

delay.resolve(ms, [value])

Create a promise which resolves after the specified ms. Optionally pass a value to resolve. For convienience this method is also the default export.

delay.reject(ms, [value])

Create a promise which rejects after the specified ms. Optionally pass a value to reject.

ms

Type: number

Milliseconds to delay the promise.

value

Type: any

Value to resolve or reject in the returned promise.

promise#clear([err])

Settle the promise prior to specified delay. If err is specified reject instead of settling normally.

err

Type: Error

Reason for cancelling the delay prematurely.

Related

  • delay - module upon which this is based
  • delay-cli - CLI for the original delay module
  • p-min-delay - Delay a promise a minimum amount of time
  • p-immediate - Returns a promise resolved in the next event loop - think setImmediate()
  • p-timeout - Timeout a promise after a specified amount of time
  • More…

License

MIT © GradeCam

Package Sidebar

Install

npm i @gradecam/delay

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

8.15 kB

Total Files

5

Last publish

Collaborators

  • rumbcam
  • taxilian
  • rgigger
  • bloveridge
  • jaroml