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