Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python RxPy-为什么排放与合并运营商交错?_Python_Rx Java_Reactive Programming_Rx Py - Fatal编程技术网

Python RxPy-为什么排放与合并运营商交错?

Python RxPy-为什么排放与合并运营商交错?,python,rx-java,reactive-programming,rx-py,Python,Rx Java,Reactive Programming,Rx Py,所以我在做了两年的RxJava和RxKotlin之后正在学习RxPy。我注意到的一件事是,某些操作符导致了RxJava中没有的疯狂交错 例如,flat_map()将导致简单的可观测的源的排放交错无序 items = Observable.from_( ("Alpha","Beta","Gamma","Delta","Epsilon")) items.flat_map(lambda s: Observable.from_(list(s))).subscribe(print) 输出: A l B

所以我在做了两年的RxJava和RxKotlin之后正在学习RxPy。我注意到的一件事是,某些操作符导致了RxJava中没有的疯狂交错

例如,
flat_map()
将导致简单的
可观测的
源的排放交错无序

items = Observable.from_( ("Alpha","Beta","Gamma","Delta","Epsilon"))

items.flat_map(lambda s: Observable.from_(list(s))).subscribe(print)
输出:

A
l
B
p
e
G
h
t
a
D
a
a
m
e
E
m
l
p
a
t
s
a
i
l
o
n
A
l
p
h
a
B
e
t
a
G
a
m
m
a
D
e
l
t
a
E
p
s
i
l
o
n
然而,对于RxJava或RxKotlin,一切都是有序的

fun main(args: Array<String>) {
    Observable.just("Alpha","Beta","Gamma","Delta","Epsilon")
        .flatMap {
            Observable.from(it.toCharArray().asIterable())
        }.subscribe(::println)
}
我确认一切都在
主线程上运行,并且没有奇怪的异步调度(我想)

为什么RxPy会这样做?我注意到,这几乎发生在处理多个
可观察的
源合并在一起的任何操作符上。默认调度程序到底在做什么


另外,为什么RxPy中没有
concat\u map()
?我得到的印象是,由于日程安排的工作方式,这在某种程度上是不可能的…

正如已经指出的,
flatMap
不能保证订单。RxPy没有将
concat\u map
实现为一个不同的操作符,但是使用
map
concat\u all
操作符可以获得相同的效果

Observable.from_( ("Alpha","Beta","Gamma","Delta","Epsilon"))\
          .map(lambda s: Observable.from_(list(s)))\
          .concat_all()\
          .subscribe(print)

在RxJava中,
flatMap
恰好尊重顺序这一事实是一个实现细节,您不应该依赖它。如果您需要保留订单,请使用
concatMap
。当然,我想这是真的。我想我的问题是为什么
concat\u map()
没有在RxPy中实现?将更新问题以包括此。。。