UNPKG

vue-poster-editor

Version:

A poster editor based on Vue.js

62 lines (47 loc) 1.54 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.SeriesPromise = undefined; var _assign2 = require('lodash/assign'); var _assign3 = _interopRequireDefault(_assign2); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function SeriesPromise() { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.concurrency = 5; (0, _assign3.default)(this, opts); this.isRunning = false; this.runnings = 0; this.promises = []; }; SeriesPromise.prototype.add = function (loader) { var _this = this; var promise = new _bluebird2.default(function (resolve, reject) { _this.promises.push({ resolve: resolve, reject: reject, loader: loader }); _this.run(); }); return promise; }; SeriesPromise.prototype.run = function () { var _this2 = this; if (this.promises.length && this.runnings < this.concurrency) { this.isRunning = true; var loader = this.promises.shift(); ++this.runnings; loader.loader(function () { --_this2.runnings; if (!_this2.runnings) { _this2.isRunning = false; } _this2.run(); }).then(loader.resolve, loader.reject); } }; exports.default = new SeriesPromise(); exports.SeriesPromise = SeriesPromise;