summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/queue.js5
-rw-r--r--lib/queue.js6
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/internal/queue.js b/lib/internal/queue.js
index 479eaf8..87d49f4 100644
--- a/lib/internal/queue.js
+++ b/lib/internal/queue.js
@@ -102,6 +102,11 @@ export default function queue(worker, concurrency, payload) {
unshift: function (data, callback) {
_insert(data, true, callback);
},
+ remove: function (testFn) {
+ q._tasks = q._tasks.filter(function (node) {
+ return !testFn(node);
+ })
+ },
process: function () {
// Avoid trying to start too many processing operations. This can occur
// when callbacks resolve synchronously (#1267).
diff --git a/lib/queue.js b/lib/queue.js
index 906467c..2d0abb7 100644
--- a/lib/queue.js
+++ b/lib/queue.js
@@ -24,6 +24,12 @@ import wrapAsync from './internal/wrapAsync';
* task in the list. Invoke with `queue.push(task, [callback])`,
* @property {Function} unshift - add a new task to the front of the `queue`.
* Invoke with `queue.unshift(task, [callback])`.
+ * @property {Function} remove - remove items from the queue that match a test
+ * function. The test function will be passed an object with a `data` property,
+ * and a `priority` property, if this is a
+ * [priorityQueue]{@link module:ControlFlow.priorityQueue} object.
+ * Invoked with `queue.remove(testFn)`, where `testFn` is of the form
+ * `function ({data, priority}) {}` and returns a Boolean.
* @property {Function} saturated - a callback that is called when the number of
* running workers hits the `concurrency` limit, and further tasks will be
* queued.