UNPKG

2.01 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.withDefaultScheduler = withDefaultScheduler;
7exports.withScheduler = withScheduler;
8
9var _dispose = require('./disposable/dispose');
10
11var dispose = _interopRequireWildcard(_dispose);
12
13var _defaultScheduler = require('./scheduler/defaultScheduler');
14
15var _defaultScheduler2 = _interopRequireDefault(_defaultScheduler);
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19function _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/** @license MIT License (c) copyright 2010-2016 original author or authors */
22/** @author Brian Cavalier */
23/** @author John Hann */
24
25function withDefaultScheduler(source) {
26 return withScheduler(source, _defaultScheduler2.default);
27}
28
29function withScheduler(source, scheduler) {
30 return new Promise(function (resolve, reject) {
31 runSource(source, scheduler, resolve, reject);
32 });
33}
34
35function 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
42function Drain(end, error, disposable) {
43 this._end = end;
44 this._error = error;
45 this._disposable = disposable;
46 this.active = true;
47}
48
49Drain.prototype.event = function (t, x) {};
50
51Drain.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
59Drain.prototype.error = function (t, e) {
60 this.active = false;
61 disposeThen(this._error, this._error, this._disposable, e);
62};
63
64function disposeThen(end, error, disposable, x) {
65 Promise.resolve(disposable.dispose()).then(function () {
66 end(x);
67 }, error);
68}
\No newline at end of file