参考: http://taobaofed.org/blog/2017/08/31/nodejs-stream/
流就是数据数据的抽像类, 按照面向对象的思想,它就是多态
下面不讨论多态的事了,贴几张图(来自淘宝前端团队的)
注:图中的writeOrBuffer----->队列池, 实际上就是 corked + highWaterMark
流的一切东西,完全可以从现实中找到答案。比较贴切的就是蓄水池.
蓄水池肯定有大小的吧,流也是有大小的.流的大小通过highWaterMark来控制
蓄水池肯定有闸门的吧,而且有两道.分别是进水口和出水口. 流也有两个闸门, 进入的闸门cork/uncork,出去的闸门 pause/resume.
蓄水池修好了
怎么用蓄水池里的水呢?
蓄水池用处多,总体上分为两大类按需取水,管道取水
按需取水的,比如农田,需要多少水,直接从蓄水池取水,可能得取一次或多次.有水时会通知农民的.
管道取水的,工厂按需取水就麻烦了,因此高级点的取水方式,来水了,工厂就正常生产,没水了. 就停工.无需多操心.工厂生产结束了,管道也就无用了。
当然 农田也可以用管道取水,工厂也可以按需取水的.
怎么往蓄水池里蓄水呢?
蓄水没有什么途径,只能不断的往里面注,当然没有需求可以不注,需求来了继续注
当然还有其它的问题.
总之流的一切问题都可以现实生活中的蓄水池来解释.注意不能浪费水哟~~~