Pluggaloid::Stream
subscribeメソッドの戻り値のクラスです。
このクラスはEnumerableをincludeしているほか、以下のようなメソッドが使えます。
throttle
引数名 | 型 | 意味 |
---|---|---|
duration |
待ち時間(秒) |
|
戻り値 |
Pluggaloid::Stream |
- |
説明
レシーバのStreamからオブジェクトを受け取った後 duration
秒待機し、その間に受け取った最後の一つのオブジェクトを、戻り値のStreamへ渡します。
例えばインクリメンタルサーチを行いたいとします。テキストボックスの内容が変化するたびにその内容を伝えるストリームイベントがある場合、throttleを使うことで、0.5秒間入力が途絶えたら検索するといった挙動が簡単に実現できます。
debounce
引数名 | 型 | 意味 |
---|---|---|
duration |
待ち時間(秒) |
|
戻り値 |
Pluggaloid::Stream |
- |
説明
レシーバのStreamからオブジェクトを受け取ったら、戻り値のStreamへ渡します。
その後 duration
秒待機し、その間に受け取った全てのイベントを無視します。
例えばふぁぼ通知音が
例
Mastodonのトゥートを受信する度に音を鳴らす
この例では :mastodon_appear_toots
を使い、FTLを含むありとあらゆる手段で受信されたtootを受け取るたびにすぐに音を鳴らします。
しかし、普通にやるとあまりにも高頻度になるので、debounceを使って、一度鳴らしたら0.5秒間は音を鳴らさないようにしています。
Plugin.create :example do
subscribe(:mastodon_appear_toots).debounce(0.5).each do
Plugin.call(:play_sound, "/path/to/sound.wav")
end
end