[Перевод] RxSwift: немного о share(), replay(), shareReplayLatestWhileConnected() и других классных операторах
|
|
Суббота, 02 Сентября 2017 г. 14:09
+ в цитатник
Я уже писал про Publish, Connect и RefCount в RxSwift. Для того, чтобы лучше раскрыть тему, представляю вашему вниманию перевод другой замечательной статьи, про различия между такими операторами, как share(), replay(), replayAll(), shareReplay(), publish() и shareReplayLatestWhileConnected().
Частая ошибка, которую совершают новички, взявшиеся за освоение
Rx — это непонимание того, что цепочка операторов на Observable выполняется заново с каждым новым подписчиком:
let results = query.rx.text
.flatMapLatest { query in
networkRequestAPI(query)
}
results.subscribe(...) // один запрос в сеть
results.subscribe(...) // другой запрос
Мы имеем несколько подписчиков на один-единственный Observable, но мы не хотим, чтобы его код исполнялся с каждым новым Subscriber'ом. Для этого в
RxSwift имеется несколько операторов. Вот резюмирующая табличка, описывающая каждый из них:
1 — ретранслирует произведенных до подписки элементов не больше, чем bufferSize.
2 — ретранслирует 1 элемент, произведенный до подписки, до тех пор, пока существует хотя бы один подписчик. Читать дальше ->
https://habrahabr.ru/post/336970/
Метки:
author dolenko_alexey
функциональное программирование
разработка под ios
разработка под os x
программирование
swift
rxswift
reactive programming
functional programming
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-