summaryrefslogtreecommitdiffstats
path: root/lib/dom-batch.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dom-batch.js')
-rw-r--r--lib/dom-batch.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/dom-batch.js b/lib/dom-batch.js
new file mode 100644
index 0000000..e1cd5d7
--- /dev/null
+++ b/lib/dom-batch.js
@@ -0,0 +1,38 @@
+(function() {
+ var batcher = {};
+ var reads = [];
+ var writes = [];
+ var batch;
+
+ function call(fns) {
+ var fn;
+ while (fn = fns.shift()) fn();
+ }
+
+ domBatch.read = function(fn) {
+ batch = batch || setBatch();
+ reads.push(fn);
+ };
+
+ domBatch.write = function(fn) {
+ batch = batch || setBatch();
+ writes.push(fn);
+ };
+
+ function setBatch() {
+ return setTimeout(function() {
+ call(reads);
+ call(writes);
+ batch = null;
+ }, 0);
+ }
+
+ // Expose the library
+ if (typeof exports === "object") {
+ module.exports = batcher;
+ } else if (typeof define === "function" && define.amd) {
+ define(batcher);
+ } else {
+ window['batcher'] = batcher;
+ }
+}()); \ No newline at end of file