|
|
- 'use strict';
-
- module.exports = asyncForEach;
-
- /**
- * Simultaneously processes all items in the given array.
- *
- * @param {array} array - The array to iterate over
- * @param {function} iterator - The function to call for each item in the array
- * @param {function} done - The function to call when all iterators have completed
- */
- function asyncForEach (array, iterator, done) {
- if (array.length === 0) {
- // NOTE: Normally a bad idea to mix sync and async, but it's safe here because
- // of the way that this method is currently used by DirectoryReader.
- done();
- return;
- }
-
- // Simultaneously process all items in the array.
- let pending = array.length;
- array.forEach(item => {
- iterator(item, () => {
- if (--pending === 0) {
- done();
- }
- });
- });
- }
|