あるストリームが発火したタイミングで、別のストリームの最後の値を流すようなストリーム
あるタイミングで発火するstreamAとstreamBがあり、streamAが発火したタイミングでstreamBの最後の値を流したい。
しかしstreamBが発火しても値は流れてこない。
というようなことをやりたいのだが、後者の条件が厄介でZipLatestでもないしCombineLatestでもないし、どうしたものかと考えた結果。
streamA.Select(_ => Time.frameCount) .CombineLatest(streamB.Select(x => new Tuple<int, string>(Time.frameCount, x)), (a, b) => a < b.Item1 ? null : b.Item2) .Where(x => x != null) .Subscribe(x => {});
それぞれのストリームの発生時刻を流して比較することで、どっちから発火したものかを判断して流す流さないを制御するようにした。