我似乎找不到任何关于foreach当涉及 future 时 Scala 中应该如何表现的明确文档。
例如,在以下代码片段中:
def someMethod: Future[Int] = {
val mySeq: Future[Seq[Int]] = Future(Seq(1,2,3,4))
mySeq.foreach(x => println(x))
Future(1)
}
Run Code Online (Sandbox Code Playgroud)
Future(1) 仅在 foreach 完成后才进行评估吗?
Future.foreach意思是“成功完成后调用以下代码Future”。所以只会在完成println后被调用。mySeq这可能发生在Future(1) is called, but equally it might not.
请注意,Future(Seq(1,2,3,4))即使结果是常量,也会异步执行。如果您将其替换为,Future.successful(Seq(1,2,3,4))则这将立即完成,并且。然而随后的println将在 之前发生Future(1)foreach调用仍然是异步的,并且可能在Future(1)
(感谢Thilo的指正)
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |