Spaces:
Sleeping
Sleeping
| ; | |
| 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(); | |
| } | |
| }); | |
| }); | |
| } | |