diff --git a/lib/file.js b/lib/file.js index a8baf0e9..e2f352df 100644 --- a/lib/file.js +++ b/lib/file.js @@ -20,19 +20,19 @@ Gun.on('opt').event(function(gun, opts) { all.keys = all.keys || {}; all.nodes = all.nodes || {}; - // adapted from https://github.com/toolness/jsondown/blob/master/jsondown.js - var isWriting = false, queuedWrites = []; - function writeFile(cb,info) { - if (isWriting) return queuedWrites.push(cb); + // queue writes, adapted from https://github.com/toolness/jsondown/blob/master/jsondown.js + var isWriting = false, queuedWrites = []; + function writeFile(cb) { + if(isWriting) return queuedWrites.push(cb); isWriting = true; fs.writeFile(opts.file, Gun.text.ify(all), function(err) { + var batch = queuedWrites.splice(0); isWriting = false; cb(err); - if (queuedWrites.length) + if(batch.length) writeFile( function(err) { - queuedWrites.forEach(function(cb) { cb(err); }) + batch.forEach( function(cb) { cb(err); } ) }); - queuedWrites=[]; }); }