首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问ExecutionContext

访问ExecutionContext
EN

Stack Overflow用户
提问于 2012-10-21 19:27:51
回答 2查看 8.9K关注 0票数 4

我有这样的特点

代码语言:javascript
复制
trait NonBlockingGoodness extends DataStore {
  import akka.dispatch.{ Future, ExecutionContext }
  import akka.util.duration._
  import akka.util.Timeout

  implicit val ec = ExecutionContext.fromExecutorService(yourExecutorServiceGoesHere)
  implicit lazy val timeout = Timeout(5 seconds)     
}

我想以这样的另一个特性访问ExecutionContext

代码语言:javascript
复制
trait AsyncGoodness extends NonBlockingGoodness {
  import akka.dispatch.Future

  def doSomething = {
    Future { "Future is the bomb." }
  }

但是,我得到了错误。

代码语言:javascript
复制
Could not find implicit value for parameter executor: akka.dispatch.ExecutionContext

更新:我想出了如何在范围内获取ExecutionContext

代码语言:javascript
复制
trait AsyncGoodness extends NonBlockingGoodness {
  import akka.dispatch.ExecutionContext
  import akka.dispatch.Future

  def doSomething()(implicit executor: ExecutionContext) = {
    Future { "Future is the bomb." }
  }

不过,我还有个后续问题。由于在AsyncGoodness中可能有多个使用ExecutionContext的方法,是否有一种方法可以在trait级别传递它,而不是像上面那样在每个方法上传递它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-22 23:31:43

事实证明,我所需要做的就是显式指定ec返回类型,供编译器使用。这是工作代码

代码语言:javascript
复制
trait NonBlockingGoodness extends DataStore {
  import akka.dispatch.{ Future, ExecutionContext }
  import akka.util.duration._
  import akka.util.Timeout

  implicit val ec: ExecutionContext = ExecutionContext.fromExecutorService(yourExecutorServiceGoesHere)
  implicit lazy val timeout = Timeout(5 seconds)     
}

trait AsyncGoodness extends NonBlockingGoodness {
  import akka.dispatch.Future

  def doSomething = {
    Future { "Future is the bomb." }
  }
票数 0
EN

Stack Overflow用户

发布于 2012-10-22 03:57:25

我知道你不想进口任何额外的东西,但是像这样的东西应该适合你。

代码语言:javascript
复制
trait NonBlockingGoodness {
  import scala.concurrent.{ Future, ExecutionContext }
  import scala.concurrent.util.duration._
  import akka.util.Timeout

  object Implicit {
     implicit val ec = ExecutionContext.Implicits.global
     implicit lazy val timeout = Timeout(5 seconds)
  }

}

trait AsyncGoodness extends NonBlockingGoodness {
  import scala.concurrent.Future
  import Implicit._
  def doSomething = {
    Future { "Future is the bomb." }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13001381

复制
相关文章

相似问题

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