4

私はこの特性を持っています

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そのような別の特性でアクセスしたい

trait AsyncGoodness extends NonBlockingGoodness {
  import akka.dispatch.Future

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

ただし、エラーが発生しています

Could not find implicit value for parameter executor: akka.dispatch.ExecutionContext

更新:ExecutionContext範囲内 を取得する方法を理解しました

trait AsyncGoodness extends NonBlockingGoodness {
  import akka.dispatch.ExecutionContext
  import akka.dispatch.Future

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

ただし、追加の質問があります。AsyncGoodnessusesに複数のメソッドがある可能性があるため、上記のように各メソッドではなくレベルExecutionContextで渡す方法はありますか。trait

4

2 に答える 2

2

余分なものをインポートする必要はありませんが、このようなものがうまくいくはずです。

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." }
  }
}
于 2012-10-22T03:57:25.803 に答える
0

ec結局のところ、コンパイラが使用する戻り値の型を明示的に指定するだけで済みます。これが作業コードです

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." }
  }
于 2012-10-22T23:31:43.173 に答える