瀏覽代碼

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;