たとえば、しきい値を下回ったときに補充する必要があるキューなど、非常に頻繁に変化するプロパティを監視しているとしましょう。
queue.rac_valuesForKeyPath("count", observer: self)
.toSignalProducer()
.filter({ (queueCount: AnyObject?) -> Bool in
let newQueueCount = queueCount as! Int
return newQueueCount < 10
})
.on(next: { _ in
// Refilling the queue asynchronously and takes 10 seconds
self.refillQueue(withItemCount: 20)
})
.start()
キューが空になると、次のハンドラーがトリガーされ、キューがいっぱいになります。count プロパティが 1 に変更されたため、キューがいっぱいになると、SignalProducer は新しい次のイベントを送信します。しかし、次のハンドラーをトリガーしたくありません。代わりに、キューがそのしきい値を下回るたびに 1 回トリガーしたいと思います。
どうすればこれを最善の方法で行うことができますか? 役立つイベント ストリーム操作はありますか? 何か案は?
乾杯、
ジェラルド