可读流节点:带有字节数参数的_read方法

时间:2017-03-19 11:21:13

标签: node.js stream

我试图在节点中找出流并在the stream handbook

中使用一些示例

我正在尝试可读流的_read方法。它说,它接受一个参数,即消费者想要读取的字节数。

我在这里有两个问题。

  • 消费者想要读取'水印'
  • 的字节数
  • 当我将_read与参数一起使用时,为什么会出现错误。

这是我的代码。

var Readable = require('stream').Readable;
var rs = Readable();

var c = 97;
rs._read = function (5) {
    rs.push(String.fromCharCode(c++));
    if (c > 'z'.charCodeAt(0)) {
        rs.push('\n');
        rs.push(null);
    }
};

setTimeout(function () {
  rs.pipe(process.stdout);
}, 2000);

这就是错误

/Users/nikhilkuria/Dev/git/node_demo/streams/streamRead.js:5
rs._read = function (5) {
                 ^
SyntaxError: Unexpected number
    at Object.exports.runInThisContext (vm.js:76:16)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3

1 个答案:

答案 0 :(得分:0)

function (5) {不是创建函数的有效语法。您需要传入一个变量名称,而不是数字,如下所示:function (a) {

您看到的错误是由于JavaScript不允许以仅以数字开头或仅由数字组成的变量名称。