summaryrefslogtreecommitdiff
path: root/lib/detect.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/detect.js')
-rw-r--r--lib/detect.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/detect.js b/lib/detect.js
index b2c4778..0b06374 100644
--- a/lib/detect.js
+++ b/lib/detect.js
@@ -6,4 +6,38 @@ import createTester from './internal/createTester';
import eachOf from './eachOf';
import findGetResult from './internal/findGetResult';
+/**
+ * Returns the first value in `coll` that passes an async truth test. The
+ * `iteratee` is applied in parallel, meaning the first iteratee to return
+ * `true` will fire the detect `callback` with that result. That means the
+ * result might not be the first item in the original `coll` (in terms of order)
+ * that passes the test.
+
+ * If order within the original `coll` is important, then look at
+ * `detectSeries`.
+ *
+ * @name detect
+ * @static
+ * @memberOf async
+ * @alias find
+ * @category Collection
+ * @param {Array|Object} coll - A collection to iterate over.
+ * @param {Function} iteratee - A truth test to apply to each item in `coll`.
+ * The iteratee is passed a `callback(err, truthValue)` which must be called
+ * with a boolean argument once it has completed. Invoked with (item, callback).
+ * @param {Function} [callback] - A callback which is called as soon as any
+ * iteratee returns `true`, or after all the `iteratee` functions have finished.
+ * Result will be the first item in the array that passes the truth test
+ * (iteratee) or the value `undefined` if none passed. Invoked with
+ * (err, result).
+ * @example
+ *
+ * async.detect(['file1','file2','file3'], function(filePath, callback) {
+ * fs.access(filePath, function(err) {
+ * callback(null, !err)
+ * });
+ * }, function(err, result) {
+ * // result now equals the first file in the list that exists
+ * });
+ */
export default createTester(eachOf, identity, findGetResult);