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