[英]scalaz-stream consume stream based on computed value
我有两个流,并且我希望只能基于每x
秒运行一次的计算消耗一个流。
我想我基本上需要创建第三个tick
流-像every(3.seconds)
-进行计算,然后在其他两个之间进行切换。
我有点被困在这里(我只是刚刚开始使用scalaz-stream来开玩笑)。
谢谢!
有几种方法可以解决此问题。 一种解决方法是使用awakeEvery
。 有关具体示例,请参见此处 。
为了简短地描述示例,请考虑我们希望每5秒查询一次Twitter,并获取推文并进行情感分析。 我们可以如下组成该管道:
val source =
awakeEvery(5 seconds) |> buildTwitterQuery(query) through queryChannel flatMap {
Process emitAll _
}
注意, queryChannel
可以表示如下。
def statusTask(query: Query): Task[List[Status]] = Task {
twitterClient.search(query).getTweets.toList
}
val queryChannel: Channel[Task, Query, List[Status]] = channel lift statusTask
如果您有任何问题,请告诉我。 如前所述,有关完整示例,请参见this 。
希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.