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