具有两个参数的“数据”callback不会以string的forms输出buffer.toString()
使用节点中的process.openStdin()对象获取input,如果callback函数有两个参数,则输出为缓冲区:
var stdin = process.openStdin(); stdin.on('data',function(err,chunk){ if(err) { console.error(err); return; } console.log(""+chunk.toString('ascii')); });
input: abcd
输出: <Buffer 61 62 63 64 0a>
但是如果callback函数是这样的一个单一的参数:
var stdin = process.openStdin(); stdin.on('data',function(chunk){ // if(err) // { // console.error(err); // return; // } console.log(""+chunk.toString('ascii')); });
然后输出与input匹配(即输出是abcd
)。 为什么是这样?
data
事件没有err
参数,它们只有一个Buffer / string参数。
如果您想侦听错误,则需要单独监听stream上的error
事件 。