首页 文章

错误:找不到参数超时的隐式值:akka.util.Timeout

提问于
浏览
2

我有这个代码,我在Scala中提出请求:

implicit val result =system.actorOf(Props(new TestActor("TestingName")),name = "Scala")

   val future3:Future[String]= ask(result ,Message).mapTo[String]
  val results = Await.result(future3, 5 second)

这里是我的导入声明

import scala.concurrent.{Await, Future}
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
import akka.util.Timeout
import akka.pattern.ask
import scala.concurrent.Await
import scala.concurrent.duration._

我收到错误信息

Error:(42, 35) could not find implicit value for parameter timeout: akka.util.Timeout val future3:Future [String] = ask(result,Message).mapTo [String]

Error:(42, 35) not enough arguments for method ask: (implicit timeout: akka.util.Timeout)scala.concurrent.Future[Any]. Unspecified value parameter timeout. val future3:Future [String] = ask(结果,消息).mapTo [String]

1 回答

  • 2

    如果您查看 ask? 的签名,您会看到:

    def ask(message: Any)(implicit timeout: Timeout, 
                          sender: ActorRef = Actor.noSender): Future[Any]
    

    它需要一个隐含的 timeout: Timeout 参数,告诉将来何时超时 . 当你致电 ask 时,你必须在范围内:

    import scala.concurrent.duration._
    import akka.util.Timeout
    
    implicit val timeout: Timeout = Timeout(5 seconds)
    val future3: Future[String]= ask(result, Message).mapTo[String]
    

相关问题