1 | 'use strict';
|
2 |
|
3 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
4 |
|
5 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
6 |
|
7 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
8 |
|
9 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
10 |
|
11 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
12 |
|
13 | var _inherits3 = _interopRequireDefault(_inherits2);
|
14 |
|
15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16 |
|
17 | var CancelError = function (_Error) {
|
18 | (0, _inherits3.default)(CancelError, _Error);
|
19 |
|
20 | function CancelError(message) {
|
21 | (0, _classCallCheck3.default)(this, CancelError);
|
22 |
|
23 | var _this = (0, _possibleConstructorReturn3.default)(this, (CancelError.__proto__ || Object.getPrototypeOf(CancelError)).call(this, message));
|
24 |
|
25 | _this.name = 'CancelError';
|
26 | return _this;
|
27 | }
|
28 |
|
29 | return CancelError;
|
30 | }(Error);
|
31 |
|
32 | var createDelay = function createDelay(willResolve) {
|
33 | return function (ms, value) {
|
34 | var timeoutId = void 0;
|
35 | var internalReject = void 0;
|
36 |
|
37 | var delayPromise = new Promise(function (resolve, reject) {
|
38 | internalReject = reject;
|
39 |
|
40 | timeoutId = setTimeout(function () {
|
41 | var settle = willResolve ? resolve : reject;
|
42 | settle(value);
|
43 | }, ms);
|
44 | });
|
45 |
|
46 | delayPromise.cancel = function () {
|
47 | if (timeoutId) {
|
48 | clearTimeout(timeoutId);
|
49 | timeoutId = null;
|
50 | internalReject(new CancelError('Delay canceled'));
|
51 | }
|
52 | };
|
53 |
|
54 | return delayPromise;
|
55 | };
|
56 | };
|
57 |
|
58 | module.exports = createDelay(true);
|
59 | module.exports.reject = createDelay(false);
|
60 | module.exports.CancelError = CancelError; |
\ | No newline at end of file |