首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点学校流-冒险#6连接

节点学校流-冒险#6连接
EN

Stack Overflow用户
提问于 2015-10-01 07:00:34
回答 1查看 236关注 0票数 0

我从一开始就倾向于node.js。溪流里有第六个问题--冒险@nodeschool,

您将在process.stdin上获得文本。在将文本写入标准输出之前,先缓冲文本并使用concat-stream模块将其反转。

我的回答是:

代码语言:javascript
复制
var concatStream = require('concat-stream');
var through2 = require('through2');
var split = require('split');
var inv = through2(trans, flush);
process.stdin
  .pipe(process.stdout)
  .pipe(concatStream(inv));

function trans (buffer, enc, callback){
  var tr = buffer.toString().split('').reverse().join('');
  this.push(tr);
  callback();
}

function flush (callback){
  callback();
}

我已经检查了解决方案,但我只想尝试模块"through2“。

它不能工作(似乎是无穷无尽的循环),有人能帮上忙吗?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-03-23 12:15:42

解决办法是:

代码语言:javascript
复制
const concat = require('concat-stream');
const through = require('through2');
const stream = require('stream');

function allRead(buf){
        const reversed = buf.toString().split('').reverse().join('');
        const streamReversed = stream.Readable.from(reversed); // or console.log(reversed)
        streamReversed.pipe(process.stdout);
}
process.stdin.pipe(concat(allRead));

您只需要通过管道将stdin流连接起来,并等待所有数据被收集。最后,反转所有缓冲区(转换为string )并将其发送到stdout (带有控制台日志或新流)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32881290

复制
相关文章

相似问题

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