scala – 如何使用并将Source队列返回给调用者而不实现它?
发布时间:2020-12-16 18:17:22 所属栏目:安全 来源:网络整理
导读:我正在尝试使用新的Akka流,并想知道我如何使用并将源队列返回给调用者而不在我的代码中实现它? 想象一下,我们有一些库可以进行多次异步调用并通过Source返回结果.功能看起来像这样 def findArticlesByTitle(text: String): Source[String,SourceQueue[Strin
我正在尝试使用新的Akka流,并想知道我如何使用并将源队列返回给调用者而不在我的代码中实现它?
想象一下,我们有一些库可以进行多次异步调用并通过Source返回结果.功能看起来像这样 def findArticlesByTitle(text: String): Source[String,SourceQueue[String]] = { val source = Source.queue[String](100,backpressure) source.mapMaterializedValue { case queue => val url = s"http://.....&term=$text" httpclient.get(url).map(httpResponseToSprayJson[SearchResponse]).map { v => v.idlist.foreach { id => queue.offer(id) } queue.complete() } } source } 和调用者可能会像这样使用它 // There is implicit ActorMaterializer somewhere val stream = plugin.findArticlesByTitle(title) val results = stream.runFold(List[String]())((result,article) => article :: result) 当我在mapMaterializedValue中运行此代码时,永远不会执行. 我无法理解为什么我无法访问SourceQueue的实例,如果应该由调用者来决定如何实现源代码. 我该如何实现呢? 解决方法
在您的代码示例中,您将返回source而不是source.mapMaterializedValue的返回值(方法调用不会改变Source对象).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- MVC + EF + Bootstrap 2 权限管理系统入门级(附源码)
- Angularjs使用link为元素绑定响应事件
- mongodb – Dockerfile中的Mongorestore
- scala – 具有两个通用参数的上下文边界
- twitter-bootstrap – 如何给引导选项卡内容边界
- scala – 如何在单元测试中抑制火花记录?
- angular – Ionic 2中的Global NavBar动态更改标题
- angularjs – 从指令模板调用服务方法
- scala – 播放2.1-RC1反向路由不编译
- 如何正确地将document.addEventListener添加到Angular2?