我知道同步与异步的类型,其中Observable可以在主线程或subscribeOn指定的后台线程上处理(可能是observeOn)。这个案子很清楚。
你能解释一下同步和非同步操作员的不同之处吗?异步操作符可以改变上游的项目顺序吗?
哪些运营商是异步的?只合并和flatMap?
当链中的所有运算符都是同步的时,必须使用整个链处理发出的项,然后才能处理下一个项?链与地图和过滤器。
答案 0 :(得分:0)
任何必须处理多个源或接受调度程序的运算符都被视为异步边界 - 简称异步。
多源运营商可能会遇到来自多个线程的信号;即使存在这些信号的总顺序,某些运算符(例如merge()
)也可能不会以相同的顺序发出它们。但一般来说,来自信号源的信号可能最终与来自其他信号源的信号交错。
同步链深入到onNext
次调用链中,除非发生一些缓冲,否则它们必须返回到下一个元素的顶级源。