我正在寻找一个奇怪的边缘情况,目录中的文件列表没有显示0 ... 2文件的结果,但是对于3 ... n文件工作正常。
事实证明原始的可观察序列工作得很好。但我在一个订阅者中使用PublishSubject
来传递更改的效果。据报道所有这些都发生在主队列上,但似乎PublishSubject
在拥有订阅者之前得到了值。 (由于没有重播,订阅者不会知道。)
因此,所有组件(源 - 中继用户 - 消费用户)的设置似乎已将 time 作为一个问题引入。
奇怪的观察:
Observable
设为Driver
,那么事情就可以了。 .observeOn(MainScheduler.instance)
(在转发订阅者之前),事情就可以了。即使我可以在地图操作中看到断点的使用,映射也已经发生在com.apple.main-queue (serial)
上。.subscribeOn(MainScheduler.instance)
,我仍然会遇到问题。 (可能是因为它起源只影响转发用户,后来为时已晚。)现在我不明白如何在防守方面处理这些问题。
似乎PublishSubject
可能不适合这种情况。但为什么观察主队列会改善这种情况呢?
你应该(防御性地)在创建/生产时指定在主队列上运行的可观察序列吗?(同样,这可能是一个实用的修复,但它只是不小心似乎解决了这个问题。)
或者换句话说,何时应该假设消费者的代码中没有及时发生的事情,即订阅设置何时?
我没办法告诉从输入序列到PublishSubject
的中继事件导致了麻烦。它是不可察觉的。让我困惑如何避免这样的错误。