[英]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.