Преглед на файлове

Added a utility to batch values.

Eugene Lazutkin преди 3 години
родител
ревизия
c03d791ef7
променени са 1 файла, в които са добавени 22 реда и са изтрити 0 реда
  1. 22 0
      src/utils/batch.js

+ 22 - 0
src/utils/batch.js

@@ -0,0 +1,22 @@
+'use strict';
+
+const {none, flushable} = require('../defs');
+
+const batch = (n = 100) => {
+  let buffer = [];
+  return flushable(value => {
+    if (value === none) {
+      // clean up buffer
+      const result = buffer;
+      buffer = null;
+      return result;
+    }
+    buffer.push(value);
+    if (buffer.length < n) return none;
+    const result = buffer;
+    buffer = [];
+    return result;
+  });
+};
+
+module.exports = batch;