首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala Futures -内置超时?

Scala Futures -内置超时?
EN

Stack Overflow用户
提问于 2013-05-01 00:15:10
回答 14查看 36K关注 0票数 63

从官方教程参考中,我不能完全理解未来的一个方面。http://docs.scala-lang.org/overviews/core/futures.html

scala中的期货是否有某种内置的超时机制?假设下面的例子是一个5‘s的文本文件..."Implicits.global“的隐含作用域最终会导致onFailure以非阻塞方式触发吗?还是可以定义?如果没有某种类型的默认超时,这是否意味着成功或失败都不会触发?

代码语言:javascript
复制
import scala.concurrent._
import ExecutionContext.Implicits.global

val firstOccurence: Future[Int] = future {
  val source = scala.io.Source.fromFile("myText.txt")
  source.toSeq.indexOfSlice("myKeyword")
}
firstOccurence onSuccess {
  case idx => println("The keyword first appears at position: " + idx)
}
firstOccurence onFailure {
  case t => println("Could not process file: " + t.getMessage)
}
EN

Stack Overflow用户

发布于 2017-02-26 20:17:31

如果您希望写入者(promise holder)是控制超时逻辑的人,请按以下方式使用akka.pattern.after

代码语言:javascript
复制
val timeout = akka.pattern.after(10 seconds, system.scheduler)(Future.failed(new TimeoutException(s"timed out during...")))
Future.firstCompletedOf(Seq(promiseRef.future, timeout))

这样,即使您的promise completed逻辑从未发生,您的调用者的未来仍将在某个时候以失败告终。

票数 5
EN
查看全部 14 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16304471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档