source: node_modules/ramda-adjunct/es/delayP.js@ d24f17c

main
Last change on this file since d24f17c was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 1.4 KB
Line 
1import { curry, propOr, partial, nth } from 'ramda';
2import isNonNegative from './isNonNegative';
3import isInteger from './isInteger';
4
5/**
6 * Creates a promise which resolves/rejects after the specified milliseconds.
7 *
8 * @func delayP
9 * @memberOf RA
10 * @category Function
11 * @sig Number -> Promise Undefined
12 * @sig {timeout: Number, value: a} -> Promise a
13 * @param {number|Object} milliseconds number of milliseconds or options object
14 * @return {Promise} A Promise that is resolved/rejected with the given value (if provided) after the specified delay
15 * @example
16 *
17 * RA.delayP(200); //=> Promise(undefined)
18 * RA.delayP({ timeout: 1000, value: 'hello world' }); //=> Promise('hello world')
19 * RA.delayP.reject(100); //=> Promise(undefined)
20 * RA.delayP.reject({ timeout: 100, value: new Error('error') }); //=> Promise(Error('error'))
21 */
22
23var makeDelay = curry(function (settleFnPicker, opts) {
24 var timeout;
25 var value;
26 if (isInteger(opts) && isNonNegative(opts)) {
27 timeout = opts;
28 } else {
29 timeout = propOr(0, 'timeout', opts);
30 value = propOr(value, 'value', opts);
31 }
32 return new Promise(function () {
33 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34 args[_key] = arguments[_key];
35 }
36 var settleFn = settleFnPicker(args);
37 setTimeout(partial(settleFn, [value]), timeout);
38 });
39});
40var delayP = makeDelay(nth(0));
41delayP.reject = makeDelay(nth(1));
42export default delayP;
Note: See TracBrowser for help on using the repository browser.