0

我目前正在尝试学习使用 RxPy,但遇到了以下问题。我尝试使用两者rx.timerrx.interval但都没有产生输出。

我的代码:

print("python version = {}".format(sys.version))    # 3.8.10
print("rx version     = {}".format(rx.__version__)) # 3.2.0

rx.timer(1.0, 0.5).subscribe(
    on_next=lambda i: print("tick {}".format(i)),
    on_error=lambda e: print("error: {}".format(e)),
    on_completed=lambda: print("completed")
)

print("try something else...")

rx.interval(1.0).subscribe(
    on_next=lambda i: print("tick {}".format(i)),
    on_error=lambda e: print("error: {}".format(e)),
    on_completed=lambda: print("completed")
)

print("try something completely else...")

rx.interval(.01).subscribe(on_next=lambda i: print(i))

产生这个结果:

python version = 3.8.10 (default, Sep 28 2021, 16:10:42) 
rx version     = 3.2.0
try something else...
try something completely else...

我在这里想念什么?

4

1 回答 1

0

rx.interval并且rx.timer仅当代码运行时间足够长以使相应的时间间隔过去时才会产生结果。

在您的示例中,您设置了计时器,但随后代码立即完成,因此您甚至看不到第一个结果。

在最简单的情况下,time.sleep最后调用让代码再运行几秒钟并观察输出。当然,如果您的程序最终会做一些有用的事情,则无需添加人为的等待时间。

于 2021-10-18T13:48:39.860 回答