13

0x02: 也谈nodejs

在上一篇文章中,主要讲了关于event loop的事情,这篇文章中像谈谈关于stream, buffer模块的事情,毕竟前端人员很少涉及到这一块的内容。

Stream

stream 类型有5种,readable, writeable, transform,duplex,和classic。readable streams可以产生数据并通过pipe传给writable,transform或者duplex stream。

const Readable = require('stream').Readable;
let r  =  new Readable();
let i = 0
r._read = function(){
    i++;    
    r.push(''+i);
    r.push('\n');
    if (i > 20) {
        r.push(null);    
    }
};

r.pipe(process.stdout);

在上面这个例子中,可以看到,如果想要根据消耗量的多少来提供相应的数据,那么就需要实现_read函数。在这个_read函数中,需要对readable对象进行相应的数据操作。最后,再将这个readable 对象通过pipe 方法传给writeable对象。

讲述了上述的readable对象,其实writeable对象与它也很类似,有一个类似的_write方法。

在关于stream的模块中,推荐throughconcat-stream

[笔记] Express4.x 源码-01