Я изучаю Rxswift и применяю его в проекте с самого начала.Я хотел бы, чтобы ваша помощь стала более уверенной в отношении концепции.
Я понимаю, что изменения в пользовательском интерфейсе должны быть выполнены на Mainscheduler, и вы должны явно использовать .observeOn(MainSchedule…
, если вы не используете Drivers
.
Я сомневаюсь, что: обычно, следует ли мне явно переключаться на фоновый поток при выполнении сетевых запросов? .
Я не нашел много литературы, рассказывающей точноэто, но я прочитал код некоторых проектов, и большинство из них нет, но некоторые читают.Те, в конечном счете, используют Drivers
или .observeOn(MainSchedule…
для внесения изменений в пользовательский интерфейс.
В https://www.thedroidsonroids.com/blog/rxswift-examples-4-multithreading,, например, он говорит
So as you may guessed, in fact everything we did was done on a MainScheduler. Why? Because our chain starts from searchBar.rx_text and this one is guaranteed to be on MainScheduler. And because everything else is by default on current scheduler – well our UI thread may get overwhelmed. How to prevent that? Switch to the background thread before the request and before the mapping, so we will just update UI on the main thread
Итак, что он делает для решения проблемы, которую он упоминает, так это явно объявляет .observeOn(ConcurrentDispatchQueueScheduler(globalConcurrentQueueQOS: .Background))
Предполагая, что запрос API все равно будет выполняться в фоновом режиме, он также выполняет все остальные вычисления в фоновом режиме., верно?
Это хорошая практика? Должен ли я в каждом запросе API явно переходить в фоновый режим, а затем возвращаться в основной режим только тогда, когда это необходимо?
Если это так, что будет лучшим способом? Комунаблюдать на заднем плане, а затем на главном?Или подписаться на фон и наблюдать за Main, как это сделано в этой сущности: https://gist.github.com/darrensapalo/711d33b3e7f59b712ea3b6d5406952a4?
Или, может быть, другим способом?
PS: извините за старый код, носреди ссылок, которые я нашел, они лучше соответствуют моему вопросу.