12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict';
- var onetime = require('onetime');
- var setImmediateShim = require('set-immediate-shim');
- module.exports = function (arr, next, cb) {
- var failed = false;
- var count = 0;
- cb = cb || function () {};
- if (!Array.isArray(arr)) {
- throw new TypeError('First argument must be an array');
- }
- if (typeof next !== 'function') {
- throw new TypeError('Second argument must be a function');
- }
- var len = arr.length;
- if (!len) {
- cb();
- return;
- }
- function callback(err) {
- if (failed) {
- return;
- }
- if (err !== undefined && err !== null) {
- failed = true;
- cb(err);
- return;
- }
- if (++count === len) {
- cb();
- return;
- }
- }
- for (var i = 0; i < len; i++) {
- setImmediateShim(next, arr[i], i, onetime(callback, true));
- }
- };
|