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();
      }
    });
  });
}
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();
      }
    });
  });
}
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 ( ) ; } } ) ; } ) ; }
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
Simultaneously processes all items in the given array .