RxPY-如何取消启动的延迟?

问题描述

我有一个可观察的(“输入”)发射类型A和B的项目。如何使用RxPY运算符实现以下情况?

情况1:如果在输入中看到A,则如果在输入流中的A发射与输出流中的A发射之间没有其他事件,则以t个时间单位执行A的延迟。

input  ---A------------
          |
output ----------A-----  delayed by some time t

情况2:与情况1一样,我们首先看到A1,然后在输出中以t个时间单位启动A1延迟。但是与此同时(即在输出A1发出之前),我们在输入中看到A2,我需要执行一个更新:输出中的A1将被取消,而A2接收剩余的延迟时间t-elapsed_time(以便A2在与A1相同的时间会在输出中触发)。换句话说,我只需要更新输出流中的数据-延迟不会改变。

input  ---A1---A2-------------
          |    |
output -----------------A2----

案例3:如果像案例1一样,我们有计划的A延迟输出,并且在A触发输出之前在输入中出现了B,那么将取消延迟输出事件A,而是立即让B出现在输出

input  ---A----B----------
          |    |
output --------B----------

我认为,如果我处理案例1和案例3,那么案例2应该相似(只需要附加某种时间计数器来测量经过时间)。问题是情况3:如何取消已经启动的延迟事件?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)