123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
- _Object$defineProperty(exports, "__esModule", {
- value: true
- });
- exports.Pool = void 0;
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
- var Pool =
- /** @class */
- function () {
- function Pool(runTask, limit) {
- this.runTask = runTask;
- this.limit = limit;
- this.aborted = false;
- this.queue = [];
- this.processing = [];
- }
- Pool.prototype.enqueue = function (task) {
- var _this = this;
- return new _promise["default"](function (resolve, reject) {
- _this.queue.push({
- task: task,
- resolve: resolve,
- reject: reject
- });
- _this.check();
- });
- };
- Pool.prototype.run = function (item) {
- var _this = this;
- this.queue = this.queue.filter(function (v) {
- return v !== item;
- });
- this.processing.push(item);
- this.runTask(item.task).then(function () {
- _this.processing = _this.processing.filter(function (v) {
- return v !== item;
- });
- item.resolve();
- _this.check();
- }, function (err) {
- return item.reject(err);
- });
- };
- Pool.prototype.check = function () {
- var _this = this;
- if (this.aborted) return;
- var processingNum = this.processing.length;
- var availableNum = this.limit - processingNum;
- this.queue.slice(0, availableNum).forEach(function (item) {
- _this.run(item);
- });
- };
- Pool.prototype.abort = function () {
- this.queue = [];
- this.aborted = true;
- };
- return Pool;
- }();
- exports.Pool = Pool;
|