nodejs遍历(js-traverse)模块:如何'break'遍历
nodejs Traverse (js-traverse) module: How to 'break' traversing
如何在nodejs遍历模块中break/stop遍历?
我正在穿越 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?
}
});
在调试期间,我观察到 return 语句将控制发送到调用(连接)中间件,但遍历在后台继续。我在文档中没有找到任何 break/stop 选项。出现错误后如何停止遍历?
提前感谢您的意见。
您可以使用 .some
而不是 .forEach
。这将循环,但一旦你 return true
.
它就会停止循环
if (Object.keys(err).length > 0) {
next(new Error(JSON.stringify(err));
return true;
}
return false;
原来遍历模块中有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();
}
}
如何在nodejs遍历模块中break/stop遍历?
我正在穿越 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?
}
});
在调试期间,我观察到 return 语句将控制发送到调用(连接)中间件,但遍历在后台继续。我在文档中没有找到任何 break/stop 选项。出现错误后如何停止遍历?
提前感谢您的意见。
您可以使用 .some
而不是 .forEach
。这将循环,但一旦你 return true
.
if (Object.keys(err).length > 0) {
next(new Error(JSON.stringify(err));
return true;
}
return false;
原来遍历模块中有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();
}
}