Node.JS-如何有条件地停止管道流
Node.JS - How to stop a piped stream conditionally
我是java脚本的新手;nodejs。。。
我有一个文件处理流,它是由多个流组成的。效果很好。。。我想通过有条件地停止流的处理并在达到阈值时读取来增强这一点。
inputStream.
pipe(unzip()).
pipe(latin1Decoder).
pipe(
combine(
through(function(obj){
//part-1 -
this.push(obj);
}),
through(function(obj){
//part-2-
this.push(obj);
})
));
在part-1
中,如果我执行this.push(null)
,则组合器将忽略传入输入。
然而,我无法停止阅读该文件。这很烦人,因为文件很大。
对我来说,从管线内部访问输入流以关闭它的最佳方式是什么?
好吧,以下是我最终解决它的方法:
var cnt = 0;
var processingStream = combine(unzip(), latin1Decoder(), part1(), part2());
inputStream.pipe(processingStream);
inputStream.on('data', function(x) {
var lineCnt = x.toString().split(/'r'n|'r|'n/).length;
cnt += lineCnt;
if (cnt > 5) {
inputStream.close();
inputStream.unpipe(processingStream);
processingStream.end();
}
});
可能不是最有效的方法,但它符合我的要求。
请注意,inputstream是分块读取的,因此一次读取多行。
相关文章:
- 通过js在新选项卡中有条件地打开url
- jQuery-有条件地附加HTML
- 有条件更新d3.js力图中节点的最佳方法
- Woocommerce产品选项有条件
- 有条件地在选项标记中应用布尔属性
- ADF:有条件地加载javascript资源
- 如何有条件地更改角度中的orderBy参数
- 无法在有条件呈现的富:面板上提交h:form
- 有条件地与react路由器链接
- 有条件地运行javascript函数-Razor,HTML
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- CSS根据属性的可用性有条件地应用样式
- 将字段设置为有条件地使用所需的字段验证器
- 将https替换为有条件的锚标记Javascript
- JavaScript while循环没有'不能在有条件的情况下工作
- 如何用d3有条件地移除元素
- 有条件刷新页面-如何设置引用人
- 有条件地创建ajax url参数以与jQuery Validate一起使用
- 在 React JSX 中有条件地呈现组件部分
- Node.JS-如何有条件地停止管道流