You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _eachOfLimit;
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./once');
var _once2 = _interopRequireDefault(_once);
var _iterator = require('./iterator');
var _iterator2 = _interopRequireDefault(_iterator);
var _onlyOnce = require('./onlyOnce');
var _onlyOnce2 = _interopRequireDefault(_onlyOnce);
var _breakLoop = require('./breakLoop');
var _breakLoop2 = _interopRequireDefault(_breakLoop);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _eachOfLimit(limit) { return function (obj, iteratee, callback) { callback = (0, _once2.default)(callback || _noop2.default); if (limit <= 0 || !obj) { return callback(null); } var nextElem = (0, _iterator2.default)(obj); var done = false; var running = 0; var looping = false;
function iterateeCallback(err, value) { running -= 1; if (err) { done = true; callback(err); } else if (value === _breakLoop2.default || done && running <= 0) { done = true; return callback(null); } else if (!looping) { replenish(); } }
function replenish() { looping = true; while (running < limit && !done) { var elem = nextElem(); if (elem === null) { done = true; if (running <= 0) { callback(null); } return; } running += 1; iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback)); } looping = false; }
replenish(); }; } module.exports = exports['default'];
|