RxSwift - MainScheduler.instance против MainScheduler.asyncInstance - PullRequest
0 голосов
/ 11 октября 2019

В чем разница между использованием MainSchedule.instance и MainSchedule.asyncInstance в RxSwift * в контексте наблюдаем ?

1 Ответ

0 голосов
/ 12 октября 2019

asyncInstance гарантирует асинхронную доставку событий, тогда как instance может доставлять события синхронно, если он уже находится в главном потоке.

Что касается того, почему вам когда-либо потребуется принудительно выполнять асинхронную доставку, когда вы уже находитесь в главном потоке: это довольно редко, и я обычно стараюсь избегать этого, но иногда у вас есть рекурсивный реактивный конвейер, где одно событиезапускает доставку нового события в том же конвейере. Если это происходит синхронно, это нарушает контракт Rx, и RxSwift выдаст предупреждение о том, что вы пытались доставить второе событие до его завершения. В этом случае вы можете наблюдать на MainScheduler.asyncInstance, чтобы разорвать цикл.

...