在 inspectOn 的上下文中使用RxSwift的 MainSchedule.instance 和 MainSchedule.asyncInstance 有什么区别?
最佳答案
asyncInstance
保证事件的异步传递,而instance
如果已经在主线程中,则可以同步传递事件。
至于为什么在主线程上时就需要强制异步传递:这种情况很少见,我通常会尝试避免它,但是有时您有一个递归的响应式(Reactive)管道,其中一个事件触发了新线程的传递同一管道中的事件。如果这是同步发生的,则会中断Rx契约(Contract),RxSwift将发出警告,警告您尝试在第一个事件完成之前传递第二个事件。在这种情况下,您可以观察MainScheduler.asyncInstance
来打破循环。