1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.withDefaultScheduler = withDefaultScheduler;
|
7 | exports.withScheduler = withScheduler;
|
8 |
|
9 | var _dispose = require('./disposable/dispose');
|
10 |
|
11 | var dispose = _interopRequireWildcard(_dispose);
|
12 |
|
13 | var _defaultScheduler = require('./scheduler/defaultScheduler');
|
14 |
|
15 | var _defaultScheduler2 = _interopRequireDefault(_defaultScheduler);
|
16 |
|
17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18 |
|
19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 | function withDefaultScheduler(source) {
|
26 | return withScheduler(source, _defaultScheduler2.default);
|
27 | }
|
28 |
|
29 | function withScheduler(source, scheduler) {
|
30 | return new Promise(function (resolve, reject) {
|
31 | runSource(source, scheduler, resolve, reject);
|
32 | });
|
33 | }
|
34 |
|
35 | function runSource(source, scheduler, resolve, reject) {
|
36 | var disposable = dispose.settable();
|
37 | var observer = new Drain(resolve, reject, disposable);
|
38 |
|
39 | disposable.setDisposable(source.run(observer, scheduler));
|
40 | }
|
41 |
|
42 | function Drain(end, error, disposable) {
|
43 | this._end = end;
|
44 | this._error = error;
|
45 | this._disposable = disposable;
|
46 | this.active = true;
|
47 | }
|
48 |
|
49 | Drain.prototype.event = function (t, x) {};
|
50 |
|
51 | Drain.prototype.end = function (t, x) {
|
52 | if (!this.active) {
|
53 | return;
|
54 | }
|
55 | this.active = false;
|
56 | disposeThen(this._end, this._error, this._disposable, x);
|
57 | };
|
58 |
|
59 | Drain.prototype.error = function (t, e) {
|
60 | this.active = false;
|
61 | disposeThen(this._error, this._error, this._disposable, e);
|
62 | };
|
63 |
|
64 | function disposeThen(end, error, disposable, x) {
|
65 | Promise.resolve(disposable.dispose()).then(function () {
|
66 | end(x);
|
67 | }, error);
|
68 | } |
\ | No newline at end of file |