<Konvertierungsoperator> des offiziellen RxSwift-Anwendungsbeispiels

Die Beispiele in diesem Artikel stammen hauptsächlich aus dem offiziellen Beispielcode, der hier heruntergeladen werden kann Der Beispielcode wurde leicht modifiziert. Die Bilder sind vonreaktivex.io/

Die Hauptfunktion dieses Artikels besteht darin, den Beispielcode anzuzeigen und die Auswirkungen des entsprechenden Beispielcodes anzuzeigen, ohne das Projekt auszuführen

Karte

wendet einen Transformationsabschluss auf die von der ObservableSequenz und gibt eine neue ObservableSequenz transformierter Elemente zurück

Bild.png

let disposeBag = DisposeBag()
Observable.of(1, 2, 3)
    .map { $0 * $0 }
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)

Drucken

1
4
9

flatMap und flatMapLatest

Persönliches Verständnis: flatMap = map + merge ; flatMapLatest = map + switchLatest

let disposeBag = DisposeBag()
        
struct Player {
    init(score: Int) {
        self.score = BehaviorSubject(value: score)
    }
    let score: BehaviorSubject<Int>
}

let A = Player(score: 80)
let B = Player(score: 90)

let player = BehaviorSubject(value: A)

player.asObservable()
    .flatMap { $0.score.asObservable() } // Change flatMap to flatMapLatest and observe change in printed output
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)

A.score.onNext(85)

player.onNext(B)

A.score.onNext(95) // Will be printed when using flatMap, but will not be printed when using flatMapLatest
B.score.onNext(100)
}

Drucken

80
85
90
95
100

Scan

Beginnen Sie mit einem Anfangswert, wenden Sie dann einen Akkumulatorabschluss auf jedes Element an, das von der ObservableSequenz Observableund geben Sie jedes Zwischenergebnis als Elementsequenz zurück

Bild.png

let disposeBag = DisposeBag()
        
Observable.of(10, 100, 1000)
    .scan(1) { aggregateValue, newValue in
        aggregateValue + newValue
    }
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)

Drucken

11
111
1111

Ich denke du magst

Origin juejin.im/post/7117938639002140680
Empfohlen
Rangfolge