RxSwift -- MainScheduler.instance 与 MainScheduler.asyncInstance

udi*_*80z 7 reactive-programming ios reactive-cocoa swift rx-swift

在 observeOn 的上下文中使用 RxSwift 的MainSchedule.instanceMainSchedule.asyncInstance有什么区别

jjo*_*son 17

asyncInstance保证事件的异步传递,而instance如果它已经在主线程上,则可以同步传递事件。

至于为什么当你已经在主线程上时你需要强制异步交付:这种情况相当罕见,我通常会尽量避免它,但有时你有一个递归反应管道,其中一个事件触发一个新的交付同一管道中的事件。如果这是同步发生的,它会破坏 Rx 合约,并且 RxSwift 会发出警告,提示您尝试在第一个事件完成之前传递第二个事件。在这种情况下,您可以观察MainScheduler.asyncInstance以打破循环。