我有两个流,我希望能够根据每x
秒运行一次的计算只使用一个。
我认为我基本上需要创建第三个tick
流 - 类似于every(3.seconds)
- 进行计算,然后在其他两个之间进行切换。
我有点被困在这里(而且我只是刚刚开始使用scalaz-stream)。
谢谢!
答案 0 :(得分:0)
我们有几种方法可以解决这个问题。接近它的一种方法是使用awakeEvery
。具体示例请参见here。
要简要描述一下这个例子,请考虑我们希望每隔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。
我希望它有所帮助!