68 lines
2.0 KiB
JavaScript
68 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.withDefaultScheduler = withDefaultScheduler;
|
|
exports.withScheduler = withScheduler;
|
|
|
|
var _dispose = require('./disposable/dispose');
|
|
|
|
var dispose = _interopRequireWildcard(_dispose);
|
|
|
|
var _defaultScheduler = require('./scheduler/defaultScheduler');
|
|
|
|
var _defaultScheduler2 = _interopRequireDefault(_defaultScheduler);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
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; } }
|
|
|
|
/** @license MIT License (c) copyright 2010-2016 original author or authors */
|
|
/** @author Brian Cavalier */
|
|
/** @author John Hann */
|
|
|
|
function withDefaultScheduler(source) {
|
|
return withScheduler(source, _defaultScheduler2.default);
|
|
}
|
|
|
|
function withScheduler(source, scheduler) {
|
|
return new Promise(function (resolve, reject) {
|
|
runSource(source, scheduler, resolve, reject);
|
|
});
|
|
}
|
|
|
|
function runSource(source, scheduler, resolve, reject) {
|
|
var disposable = dispose.settable();
|
|
var observer = new Drain(resolve, reject, disposable);
|
|
|
|
disposable.setDisposable(source.run(observer, scheduler));
|
|
}
|
|
|
|
function Drain(end, error, disposable) {
|
|
this._end = end;
|
|
this._error = error;
|
|
this._disposable = disposable;
|
|
this.active = true;
|
|
}
|
|
|
|
Drain.prototype.event = function (t, x) {};
|
|
|
|
Drain.prototype.end = function (t, x) {
|
|
if (!this.active) {
|
|
return;
|
|
}
|
|
this.active = false;
|
|
disposeThen(this._end, this._error, this._disposable, x);
|
|
};
|
|
|
|
Drain.prototype.error = function (t, e) {
|
|
this.active = false;
|
|
disposeThen(this._error, this._error, this._disposable, e);
|
|
};
|
|
|
|
function disposeThen(end, error, disposable, x) {
|
|
Promise.resolve(disposable.dispose()).then(function () {
|
|
end(x);
|
|
}, error);
|
|
} |