<operador de conversión> de ejemplo de uso oficial de RxSwift

Los ejemplos de este artículo provienen principalmente del código de ejemplo oficial, que se puede descargar desde aquí El código de ejemplo se ha modificado ligeramente. Las imágenes son de reactivex.io/

La función principal de este artículo es ver el código de ejemplo y ver el efecto del código de ejemplo correspondiente, sin ejecutar el proyecto.

mapa

aplica un cierre de transformación a los elementos emitidos por la Observablesecuencia y devuelve una nueva Observablesecuencia de elementos transformados

imagen.png

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

Impresión

1
4
9

flatMap y flatMapLatest

Comprensión personal: 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)
}

Impresión

80
85
90
95
100

escanear

Comience con un valor semilla inicial, luego aplique un cierre acumulador a cada elemento emitido por la Observablesecuencia y devuelva cada resultado intermedio como una Observablesecuencia de elementos

imagen.png

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

Impresión

11
111
1111

Supongo que te gusta

Origin juejin.im/post/7117938639002140680
Recomendado
Clasificación