【发布时间】:2017-06-26 07:37:12
【问题描述】:
流使我们能够对无限时间序列进行建模。
它们可以使用生成器来实现,通过next从流中检索程序想要的值。
但 Node.js 流是事件发射器,并通过 data 事件告诉程序何时处理数据。
这似乎是告诉程序何时处理新数据的责任交给了流,而不是将其留给可能最清楚自己是否可以处理新数据的程序。
这两种方法(推式和拉式)有名称吗?何时使用?
【问题讨论】:
标签: javascript stream
流使我们能够对无限时间序列进行建模。
它们可以使用生成器来实现,通过next从流中检索程序想要的值。
但 Node.js 流是事件发射器,并通过 data 事件告诉程序何时处理数据。
这似乎是告诉程序何时处理新数据的责任交给了流,而不是将其留给可能最清楚自己是否可以处理新数据的程序。
这两种方法(推式和拉式)有名称吗?何时使用?
【问题讨论】:
标签: javascript stream
但是有一个可用于流(通常称为流2)的推/拉方法集,我同意它的使用仍然相当复杂,并且生成器被多次提出作为可能的解决方案。
我在我的Scramjet 框架中实现了这个,所以一个非常简单的流生成器看起来像这样:
const dat = [1,2,3,4];
const iter = (function* () { yield* dat; })();
exports.stream = () => DataStream.fromIterator(iter);
您可以使用scramjet repo here 中的nodeunit 运行测试用例。
【讨论】: