UNPKG

molstar

Version:

A comprehensive macromolecular library.

83 lines 3.45 kB
"use strict"; /** * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.Task = void 0; var tslib_1 = require("tslib"); var observable_1 = require("./execution/observable"); var synchronous_1 = require("./execution/synchronous"); var id_factory_1 = require("../mol-util/id-factory"); var Task; (function (Task) { var Impl = /** @class */ (function () { function Impl(name, f, onAbort) { this.name = name; this.f = f; this.onAbort = onAbort; this.id = getNextId(); } Impl.prototype.run = function (observer, updateRateMs) { if (updateRateMs === void 0) { updateRateMs = 250; } if (observer) return (0, observable_1.ExecuteObservable)(this, observer, updateRateMs); return this.f(synchronous_1.SyncRuntimeContext); }; Impl.prototype.runAsChild = function (ctx, progress) { if (ctx.isSynchronous) return this.f(synchronous_1.SyncRuntimeContext); return (0, observable_1.ExecuteObservableChild)(ctx, this, progress); }; Impl.prototype.runInContext = function (ctx) { if (ctx.isSynchronous) return this.f(synchronous_1.SyncRuntimeContext); return (0, observable_1.ExecuteInContext)(ctx, this); }; return Impl; }()); function is(t) { var _t = t; return !!t && typeof _t.id === 'number' && typeof _t.name === 'string' && !!_t.run; } Task.is = is; function isAbort(e) { return !!e && !!e.isAborted; } Task.isAbort = isAbort; function Aborted(reason) { return { isAborted: true, reason: reason, toString: function () { return "Aborted" + (reason ? ': ' + reason : ''); } }; } Task.Aborted = Aborted; function create(name, f, onAbort) { return new Impl(name, f, onAbort); } Task.create = create; function constant(name, value) { var _this = this; return create(name, function (ctx) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { return [2 /*return*/, value]; }); }); }); } Task.constant = constant; function empty() { var _this = this; return create('', function (ctx) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { return [2 /*return*/]; }); }); }); } Task.empty = empty; function fail(name, reason) { var _this = this; return create(name, function (ctx) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { throw new Error(reason); }); }); }); } Task.fail = fail; function resolveInContext(object, ctx) { if (is(object)) return ctx ? object.runInContext(ctx) : object.run(); return object; } Task.resolveInContext = resolveInContext; var getNextId = (0, id_factory_1.idFactory)(0, 0x3fffffff); })(Task || (Task = {})); exports.Task = Task; //# sourceMappingURL=task.js.map