diff --git a/lib/node_modules/@stdlib/utils/async/for-each/lib/main.js b/lib/node_modules/@stdlib/utils/async/for-each/lib/main.js index 72c07d317af5..bb0ded444c7f 100644 --- a/lib/node_modules/@stdlib/utils/async/for-each/lib/main.js +++ b/lib/node_modules/@stdlib/utils/async/for-each/lib/main.js @@ -30,54 +30,40 @@ var factory = require( './factory.js' ); * * ## Notes * -* - If a provided function calls the provided callback with a truthy error argument, the function suspends execution and immediately calls the `done` callback for subsequent error handling. -* - This function does **not** guarantee that execution is asynchronous. To do so, wrap the `done` callback in a function which either executes at the end of the current stack (e.g., `nextTick`) or during a subsequent turn of the event loop (e.g., `setImmediate`, `setTimeout`). +* - If a provided function calls the callback with a truthy error argument, iteration stops and `done` is invoked. +* - This function is not guaranteed to be asynchronous. Use `setImmediate`, `setTimeout`, or `process.nextTick` to ensure async behavior. * * @param {Collection} collection - input collection * @param {Options} [options] - function options * @param {*} [options.thisArg] - execution context -* @param {PositiveInteger} [options.limit] - maximum number of pending invocations at any one time -* @param {boolean} [options.series=false] - boolean indicating whether to wait for a previous invocation to complete before invoking a provided function for the next element in a collection -* @param {Function} fcn - function to invoke for each element in a collection -* @param {Callback} done - function to invoke upon completion +* @param {PositiveInteger} [options.limit] - maximum concurrent invocations +* @param {boolean} [options.series=false] - process elements serially +* @param {Function} fcn - function to invoke for each element +* @param {Callback} done - function invoked upon completion * @throws {TypeError} first argument must be a collection -* @throws {TypeError} options argument must be an object -* @throws {TypeError} must provide valid options -* @throws {TypeError} second-to-last argument must be a function -* @throws {TypeError} last argument must be a function +* @throws {TypeError} options must be an object +* @throws {TypeError} `fcn` must be a function +* @throws {TypeError} `done` must be a function * @returns {void} * * @example -* var readFile = require( '@stdlib/fs/read-file' ); -* * function done( error ) { * if ( error ) { * throw error; * } -* console.log( 'Successfully read all files.' ); +* console.log( 'Completed.' ); * } * -* function read( file, next ) { -* var opts = { -* 'encoding': 'utf8' -* }; -* readFile( file, opts, onFile ); -* -* function onFile( error ) { -* if ( error ) { -* return next( error ); -* } -* console.log( 'Successfully read file: %s', file ); +* function process( value, next ) { +* setTimeout( function onTimeout() { +* console.log( 'Processed: %s', value ); * next(); -* } +* }, 10 ); * } * -* var files = [ -* './beep.js', -* './boop.js' -* ]; +* var arr = [ 1, 2, 3 ]; * -* forEachAsync( files, read, done ); +* forEachAsync( arr, process, done ); */ function forEachAsync( collection, options, fcn, done ) { if ( arguments.length < 4 ) {