RxSwift, как сопоставить событие onComplete - PullRequest
0 голосов
/ 21 мая 2018

У меня есть BehaviorSubject<[Int]>, длина массива увеличивается по одному.Я хотел бы иметь Observable, который генерирует событие completed, когда первый элемент добавляется в массив, и мне все равно, что будет потом.Как это сделать?

1 Ответ

0 голосов
/ 22 мая 2018

Оберните подписку на ваш BehaviorSubject в свой Observable, который вызовет onCompleted, когда содержимое вашего BehaviorSubject изменится:

let array = BehaviorSubject<[Int]>(value: [])

var observable: Observable<Void> {
    return Observable<Void>.create { observer in
    // skip first element as BehaviorSubject repeats last value on subscription
        array.skip(1).subscribe(onNext: { _ in
            observer.onCompleted()
        })
    }
}

Затем используйте его следующим образом:

observable.subscribe(onCompleted: {
    print("bump")
}).disposed(by: disposeBag)

array.onNext([1]) // now "bump" gets printed
array.onNext([1, 2])
...