6

反応バナナで現在の時刻をどのように処理しますか?

理想的にはBehaviour、現在の時刻を取得するために「ポーリング」できる が必要です。Behaviourただし、 s をEvent(経由<@などで)ポーリングすると、現在の値ではなくBehaviour以前 Eventの の値が得られます。(これは、実際に有用な循環定義を避けるためだと認識しています。)

fromPoll役立つと思ったもの を見つけました。Behaviourから観察される s はfromPoll、それ自体に依存することはできないため、前の発火の直後ではなく、これが発火する直前の動作を観察することによってサイクルを導入することはできません。EventEvent

余談

より形式的な言い方をすれば、 s は常に時刻t+Event発生し、常に時刻t-に観察される、つまり、それらの直前に発生する非常に短い時間に発生する動作を観察することを示唆しています。および友人によって生成された s の新しい値は、常に時刻 t+ から開始されるため、時刻t+も発生する s によって観測できませんでした。BehavioursEventBehaviouraccumBEvent

この提案されたセマンティクスの下では、Behaviourによって作成された s は、それぞれが処理fromPollされる直前に更新されます。EventBehaviourの は、友人によって作成されているため、後で更新されaccumBます。

私のユースケース

とにかく、それは私の主な質問に対する重大な余談です。反応バナナで現在の時刻 ( の時刻ではなく)を処理する方法があるかどうかを知りたいです。Event私の使用例は、たとえば、エンティティが送信する ping を追跡し、それらのいずれかが特定の時間間隔で ping を送信していない場合に警告イベントを通知することです。

もちろん、私は非常に頻繁にイベントを発生させることができますし、今後もそうするつもりです。しかし、それらが正確ではないのは疣贅のようです。

これに対処する正しい方法は何ですか?

4

1 に答える 1