为了账号安全,请及时绑定邮箱和手机立即绑定

关于流私有方法到底是什么鬼?

fs模块创建的流和stream创建的可读可写流有什么区别吗,还有_write,_read这些到底是什么?

正在回答

2 回答

_write,_read 是 私有函数的名字。 这些流具体怎么读 怎么写,就是通过修改各自类原型的私有方法来实现的

比如:

ReadStream.prototype._read = function(){

    this.push(' ...')

     ...

}

0 回复 有任何疑惑可以回复我~

// abstract method.  to be overridden in specific implementation classes.    

// call cb(er, data) where data is <= n in length.    

// for virtual (non-string, non-buffer) streams, "length" is somewhat    

// arbitrary, and perhaps not very meaningful.    

Readable.prototype._read = function(n) {    

this.emit('error', new Error('not implemented'));    

};    
https://github.com/nodejs/node/blob/master/lib/_stream_readable.js


这是他的解释,它是readable里的一个抽象方法,这里是对这个抽象方法进行了实现,而fs.js里面已经对这个方法实现过了

fs.createReadStream = function(path, options) {    
return new ReadStream(path, options);    
};    
-----------------
ReadStream.prototype._read = function(n) {    
if (typeof this.fd !== 'number')    
return this.once('open', function() {    
this._read(n);    
});    
if (this.destroyed)    
return;    
if (!pool || pool.length - pool.used < kMinPoolSpace) {    
// discard the old pool.    
pool = null;    
allocNewPool(this._readableState.highWaterMark);    
}

代码是部分的,大概是告诉你这是真的

https://github.com/nodejs/node/blob/master/lib/fs.js

有兴趣自己去看看吧。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
进击Node.js基础(二)
  • 参与学习       76754    人
  • 解答问题       226    个

本教程带你攻破 Nodejs,让 JavaScript流畅运行在服务器端

进入课程

关于流私有方法到底是什么鬼?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信