Полный список Publisher Operators от Apple
Операторы с шариковыми диаграммами
Zip, CombineLatest, Map, Filter with interactive vizualization
Последовательные операторы
- .first, .first(where:)
- .last, .last(where:)
- .output(at:), .output(in:)
- .count
- .contains, .contains(where:)
- .allSatisfy
- .reduce
Controlling Timing операторы
-
delay -
-
debounce - операция фильтрации. При получении значения делается пауза в заданный интервал времени и отправляется последнее и единственное значение. Если в заданный интервал приходит новое значение, то отсчет паузы возобновляется
Пример: Панель поиска, где пользователи могут вводить поисковые запросы. Если пользователь продолжает печатать в течение n периода, период ожидания возобновляется, гарантируя, что вызов API будет выполнен только после небольшой паузы в наборе текста.
-
throttle - операция фильтрации. Cобирает несколько результатов с течением времени и отправляет один результат, но делает это с фиксированными временными окнами
Пример: Ккнопка, которую пользователи могут нажимать, вы хотите обрабатывать нажатия, но не допускать случайных множественных нажатий в быстрой последовательности.
throttle
гарантирует, что событие нажатия кнопки обрабатывается только один раз каждые 500 миллисекунд, независимо от того, сколько раз была нажата кнопка. -
measure interval -
Объединяющие операторы
- .prepend
- .append
- .switchToLatest
- .merge(with:)
- .combineLatest
- .zip
Методы:
.receive(on: DispatchQueue.main)
- все, что влияет на UI, нужно делать в главном потоке. Вызывать перед .sink
.setFailureType(to: Error.self)
- превращает Publisher<Bool, Never>
в Publisher<Bool, Error>
.eraseToAnyPublisher()
- чтобы был AnyPublisher<>, добавлять в конец
4.1.4.3 Convenience Publishers Theme | Back To iOSWiki Contents | 4.1.4.5 Subscriber Theme