我真的很难理解 Play 的 Iteratees 和 Enumerators 的基本目的。
我已经阅读了:
- Normal Humans 理解 Play2 Iteratees - Iteratees - Enumerators 我阅读了这个答案,发现它不依赖于拉模型(如 InputStream),而是使用推模型。
迭代器是一个有趣的工具--一方面,它将数据“推送”到处理程序,而不是依赖于处理程序来拉取数据,因此具有更好的性能。另一方面,它允许处理程序控制何时停止流程。
我已经阅读了:
- Normal Humans 理解 Play2 Iteratees - Iteratees - Enumerators 我阅读了这个答案,发现它不依赖于拉模型(如 InputStream),而是使用推模型。
迭代器是一个有趣的工具--一方面,它将数据“推送”到处理程序,而不是依赖于处理程序来拉取数据,因此具有更好的性能。另一方面,它允许处理程序控制何时停止流程。
但是Play关于Iteratee
的文档说:
或者更一般地,使用
Enumerator.fromStream
枚举java.io.InputStream
。需要注意的是,在应用此枚举器的Iteratee
准备好接受更多输入之前,输入不会被读取。
等等....这是怎么回事?
数据由Enumerator
推送还是由Iteratee
拉取?(即谁决定何时计算更多数据)