首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs遍历(js-遍历)模块:如何“断开”遍历

nodejs遍历(js-遍历)模块:如何“断开”遍历
EN

Stack Overflow用户
提问于 2015-01-09 20:49:48
回答 2查看 1.1K关注 0票数 1

如何在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)中间件发送控制,但遍历在后台继续进行。我在文档中没有找到任何中断/停止选项。如何在错误发生后停止遍历?

提前感谢您的投入。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-13 21:22:19

结果发现遍历模块中有this.stop()方法来停止遍历对象。尽管模块文档中没有提到此方法。

代码语言:javascript
复制
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();
    }
 }
票数 1
EN

Stack Overflow用户

发布于 2015-01-09 20:57:47

您可以使用.some而不是.forEach。这将循环,但一旦您返回true,它将停止循环。

代码语言:javascript
复制
if (Object.keys(err).length > 0) {
    next(new Error(JSON.stringify(err));
    return true;
}
return false;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27869014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档