我正在尝试学习溪流,并且遇到一些问题让它正常工作。
对于这个例子,我只想将静态对象推送到流并将其传递给我的服务器响应。
这是我到目前为止所做的,但很多都不起作用。如果我甚至可以将流输出到控制台,我可以弄清楚如何将它传递给我的响应。
var Readable = require('stream').Readable;
var MyStream = function(options) {
Readable.call(this);
};
MyStream.prototype._read = function(n) {
this.push(chunk);
};
var stream = new MyStream({objectMode: true});
s.push({test: true});
request.reply(s);
答案 0 :(得分:9)
您当前的代码存在一些问题。
Readable
构造函数的选项,因此您的错误不会造成任何麻烦,但从语义上讲,这是错误的,不会产生预期的结果。Readable
的构造函数,但不继承原型属性。您应该使用util.inherits()
来继承Readable
。chunk
变量未在代码示例中的任何位置定义。这是一个有效的例子:
var util = require('util');
var Readable = require('stream').Readable;
var MyStream = function(options) {
Readable.call(this, options); // pass through the options to the Readable constructor
this.counter = 1000;
};
util.inherits(MyStream, Readable); // inherit the prototype methods
MyStream.prototype._read = function(n) {
this.push('foobar');
if (this.counter-- === 0) { // stop the stream
this.push(null);
}
};
var mystream = new MyStream();
mystream.pipe(process.stdout);