如何在nodejs遍历模块中中断/停止遍历?
我正在穿越一个json,在某些条件下,我想停止穿越。
traverse(req.body).forEach(function (xnode) { log.info("Inspecting node: "+xnode); ... ... //If JSON Threat is detected, return error if(Object.keys(err).length > 0){ return next(new Error(JSON.stringify(err))); //traversing should halt here but it continues //DO I need to explicitly break it? } });
调试期间,我观察到返回语句向调用(connect)中间件发送控制,但遍历在后台继续进行。我在文档中没有找到任何中断/停止选项。如何在错误发生后停止遍历?
提前感谢您的投入。
发布于 2015-01-13 21:22:19
结果发现遍历模块中有this.stop()方法来停止遍历对象。尽管模块文档中没有提到此方法。
traverse(obj).forEach(function (x) {
console.log("key: "+this.key+"\tValue: "+x+"\tLevel: "+this.level);
if(this.key==='b'){
console.log("Halting Traversal: "+this.key+" value: "+x);
this.stop();
}
}发布于 2015-01-09 20:57:47
您可以使用.some而不是.forEach。这将循环,但一旦您返回true,它将停止循环。
if (Object.keys(err).length > 0) {
next(new Error(JSON.stringify(err));
return true;
}
return false;https://stackoverflow.com/questions/27869014
复制相似问题