From d41f293b400c1d2186d4b6bda3098cab4b1e5a0c Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Tue, 6 Sep 2016 01:57:53 -0700 Subject: [PATCH] db: optimize each(). --- lib/db/lowlevelup.js | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/lib/db/lowlevelup.js b/lib/db/lowlevelup.js index cc71e3d4..afebb8bb 100644 --- a/lib/db/lowlevelup.js +++ b/lib/db/lowlevelup.js @@ -286,7 +286,7 @@ LowlevelUp.prototype.each = function each(options, handler, callback) { iter = this.iterator(opt); - (function next(err, key) { + function next(err, key) { if (err && typeof err !== 'boolean') { return iter.end(function() { callback(err); @@ -306,25 +306,29 @@ LowlevelUp.prototype.each = function each(options, handler, callback) { } } - iter.next(function(err, key, value) { - if (err) { - return iter.end(function() { - callback(err); - }); - } + iter.next(onNext); + } - if (key === undefined && value === undefined) - return iter.end(callback); + function onNext(err, key, value) { + if (err) { + return iter.end(function() { + callback(err); + }); + } - try { - handler(key, value, next, i++); - } catch (e) { - return iter.end(function() { - callback(e); - }); - } - }); - })(); + if (key === undefined && value === undefined) + return iter.end(callback); + + try { + handler(key, value, next, i++); + } catch (e) { + return iter.end(function() { + callback(e); + }); + } + } + + next(); }; /**