我从开始就倾向于node.js。 在stream-adventure @ nodeschool中有问题#6,
您将在process.stdin上获得文本。缓冲文本并使用反转它 将
concat-stream
模块写入stdout之前。
这是我的答案:
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();
}
我已经检查了解决方案, 但我只想尝试模块"通过2"。
它无法工作(看起来像无限循环), 任何人都可以帮助这个吗? 非常感谢!
答案 0 :(得分:0)
解决方案是这样的:
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流传输到concat并等待所有数据被收集。最后,反转所有缓冲区(转换为string)并将其发送到stdout(使用控制台日志或新流)。