1
我在Play 2.2應用程序中遇到了一些奇怪的行爲,我不知道如何去調試它。我的代碼運行良好,直到我開始使用迭代。調試遊戲中的期貨和迭代器2.2
我的角色建立一個枚舉像下面並將其發送回給調用者:
f.map { reply =>
val emailFeed = reply.asInstanceOf[Enumerator[Message]]
val iter = Iteratee.fold[Message,String] ("") {
(result, msg) => {
Logger.debug("appending subj")
result ++ msg.getSubject()
Logger.debug(" subj appended")
result
}
}
val result: Future[String] = emailFeed |>>> iter
Await.result(result, 10 minutes)
問題是Await.result超時:
val emailFeed = Concurrent.unicast[Message] (
onStart = {
pushee => {
log.debug("Pushing 1")
pushee.push(messages.apply(0))
log.debug("Pushed 1")
}
},
onComplete = {
log.debug("Done with pushee")
},
onError = {
(msg, in) => log.error(msg)
}
主叫然後通過消耗它。我已經遍歷迭代代碼並看到它被調用。只有一個塊要處理,因此速度很快。我也看到枚舉器並在控制檯中迭代調試stmts。我只是不知道它爲什麼沒有完成:
[debug] application - Pushing 1
[debug] application - Pushed 1
[debug] application - appending subj
[debug] application - subj appended