我有一个listBox并且正在观察何时选择了项目:
selectedItems.Subscribe(DoWorkWIthSelectedItems);
observable返回一个viewModel项目数组,在DoWorkWIthSelectedItems
中我会查看所选项目列表并完成一些工作。但是,由于用户可能会非常快速地打开/关闭选择,每当对某个项目进行工作时,我都不希望再对该项目进行任何工作30秒。 30秒后,如果再次选择该项目,请继续操作。
是否有Rx方法可以做到这一点?我不确定它是Sample还是Throttle。此外,我不知道是否使用Rx我能够区分数组中的项目,这些项目有利于处理或应该被忽略。我是否需要viewModel项上的附加属性来指示某些“工作”状态?
感谢。
答案 0 :(得分:1)
无论什么样的状态都是必须的。我认为你最简单的解决方案就是(伪代码)
var recentlyUsed = new ConcurrentDictionary<T, DateTime>();
...
selectedItems
.Do(/* remove expired items from recentlyUsed */)
.Where(/* items are not in recently used */)
.Do(/* add items to recently used */)
.Subscribe(DoWorkWIthSelectedItems);