2

readable事件未在process.stdin

测试.js

var self = process.stdin, data ;

self.on('readable', function() {
    var chunk = this.read();
    if (chunk === null) {
        handleArguments();
    } else {
       data += chunk;
    }
});

self.on('end', function() {
   console.log("end event",data )
});

然后,当我这样做node test.js并开始在控制台中输入时,readable根本不会触发该事件。

请告诉我如何将readable侦听器附加到 process.stdin 流。

4

1 回答 1

1

如果您尝试捕获您在控制台上键入的内容,请尝试以下步骤,

process.stdin.resume();

process.stdin 以暂停状态开始。您需要将其置于就绪状态。侦听“数据”事件以捕获在控制台中键入的数据。

process.stdin.on('data', function(data) {       
    console.log(data.toString());    
}); 

我不确定这是否对您的实际问题有所帮助。希望它至少能给您一些见解。

附加信息:

readable事件在 Node.js v0.9.4 中引入。因此请检查您使用的节点是否为 gte 0.9.4。

来自节点 api 文档的注释:

如果使用了 setEncoding(),则 'data' 事件会发出 Buffer(默认情况下)或字符串。

请注意,添加“数据”事件侦听器会将 Readable 流切换到“旧模式”,即数据一旦可用就会发出,而不是等待您调用 read() 来使用它。

于 2013-08-18T06:36:36.170 回答