Почему здесь зависает PushEnumerator?

В проекте sbt play я запускаю console-project и вставляю этот код:

import play.api.libs.iteratee._

val e = Enumerator.imperative[String]()

e.push("foo")
e.push("bar")
e.push("bah")
e.close

val i: Iteratee[String, String] = Iteratee.consume[String]()

val applied = (e andThen Enumerator.eof) |>> i

Iteratee.flatten(applied).run.value.get

Однако он умирает с тайм-аутом. Я делаю что-то не так здесь?


person bmdhacks    schedule 29.10.2012    source источник
comment
Вот один из релевантных. Но я все еще получаю TIMEOUT. complete" title="почему play pushenumerator должен быть закрыт до завершения итератора"> stackoverflow.com/questions/10641294/   -  person wliao    schedule 29.10.2012
comment
Да, я считаю, что различие заключается в том, что я нажимаю и закрываю свой перечислитель, прежде чем применять его к Iteratee, но я не вижу ничего, что указывало бы на то, что это должно быть проблемой в документации.   -  person bmdhacks    schedule 01.11.2012
comment
Нет, это важно. Вы можете посмотреть исходный код Enumerator.scala по адресу github.com/playframework/Play20/blob/master/framework/src/. Когда итерация не применяется, push ничего не делает и возвращает false, потому что нет какого-то внутреннего хранилища для того, что вы нажали.   -  person wliao    schedule 01.11.2012