Давайте представим, что мы имеем массив экземпляров AnObject и должны иметь следующую последовательность действий для выполнения:RxSwift: цепочки несколько действий
- передавать объекты бакэнду через отдельные вызовы
- после шага 1 отделок хранить этот массив в БД в пакетном режиме
- после шага 2 отделки дополнительной обработки для каждого элемента
, и мы хотим получить сигнал только после выполнения всех этих шагов (или произошла ошибка). Каков правильный способ достичь этого через RxSwift и действительно ли это возможно?
Пожалуйста, найдите мои прототипы ниже. К сожалению, я не придумал пример кода для цепочки, так что демо не будет.
func makeAPIRequest(object: AnObject) -> Observable<Void> {
...
}
func storeData(data: [AnObject]) -> Observable<Void> {
...
}
func additionalProcessing(object: AnObject) -> Observable<Void> {
...
}
func submitData()
{
let data: [AnObject] = ...;
let apiOperations = data.map{ makeAPIRequest($0) };
let storageOperation = storeData(data);
let processingOperations = data.map{ additionalProcessing($0) };
... // some code to chain steps 1-3
.subscribe { (event) -> Void in
// should be called when operations from step 3 finished
}.addDisposableTo(disposeBag);
}
Спасибо, Michał, это очень полезно! Могу ли я спросить, есть ли какие-либо источники/примеры, из которых я могу найти связанные с ними практики RxSwift (кроме документации)? – NikGreen
Я работал с Reactive Cocoa 2.x, который имеет довольно похожий API (но в ObjC) и множество доступных примеров.К сожалению, для RxSwift еще не так много, возможно, взгляните на приложение Eidolon: https://github.com/artsy/eidolon. Кроме того, я обнаружил, что игровая площадка RxSwift очень полезна, вы можете экспериментировать с Observables легко: https://github.com/ReactiveX/RxSwift#playgrounds –