Reading & Doing
Old Tiny Games
对于新到的子数据流,switchAll 和 exhaust 采用的是完全相反的策略
只要上游吐出新的 子数据流,switchAll 会直接订阅“新的”并退订“旧的” 根据上一点,switchAll 产生的 Observable 只有在上游完结且当前子数据流也完结情况下才会完结
0a0b1a1b2a2b3a3b
0a3a3b
exhaust 会先耗尽当前的子数据流(current),之后等待并重新订阅 上游吐出的“新的”子数据流(next) 在 exhuast 订阅新的子数据流之前,上游可能已经吐出不止一个子数据流,但因为 current 未完结,因此这些数据流被忽略 0a0b1a1b2a2b3a3b 0a0b2a2b