0

这是我在笔记本电脑上尝试过的“使用 python 进行反应式编程”一书中的代码。

import sys
from rx import Observable

argv = Observable.from_(sys.argv[1:])
argv.subscribe(
    on_next=lambda i: print("on_next: {}".format(i)),
    on_error=lambda e: print("on_error: {}".format(e)),
    on_completed=lambda: print("on_completed")
)

如果我跑

python echo1.py hello world there

输出应如下所示:

on_next: hello 
on_next: world 
on_next: there 
on_completed
4

2 回答 2

0

现在你不需要 Observable。所有操作都在管道中执行。

import rx
from rx import operators as ops

argv = rx.from_(sys.argv[1:])

# argv.map(...).filter(...).subscribe(...) old stuff
argv.pipe(
    ops.map(...), 
    ops.filter(...)
).subscribe(...)

所以忘记 Observable 对象吧。

于 2021-07-26T07:37:05.060 回答
0

我相信你的导入是这里的问题,因为 RxPY 3.0.1 导入的工作方式似乎有所不同,你现在from_直接从rx.

您可能想查看RxPY 文档中的入门迁移部分,它们应该比我现在的工作原理更好地解释。

import sys
from rx import from_

argv = ops.from_(sys.argv[1:])
argv.subscribe(
    on_next=lambda i: print("on_next: {}".format(i)),
    on_error=lambda e: print("on_error: {}".format(e)),
    on_completed=lambda: print("on_completed")
)
于 2019-09-27T08:54:37.600 回答