0

RxSwift: cách truy cập giá trị trước và sau khi biến đổi bằng flatMap

Sử dụng flatMap, ta có thể sử dụng được các giá trị đã qua phép biến đổi:

func getAfterObservable(before: Int) -> Observable<Int> {
    return Observable.of(before + 1)
}

let before = 1
let bag = DisposeBag()

Observable.of(before)
    .flatMap { getAfterObservable(before: $0) }
    .subscribe( onNext: { after in
        print("after: \(after)")
    })
    .disposed(by: bag)

Output:

after: 2

Muốn dùng cả giá trị trước phép biến đổi, sửa lại như sau:

Observable.of(before)
    .flatMap { before in getAfterObservable(before: before).map { after in (before, after) } }
    .subscribe( onNext: { before, after in
        print("before: \(before)")
        print("after: \(after)")
    })
    .disposed(by: bag)

Output:

before: 1
after: 2

Ứng dụng: trong trường hợp muốn xử lý cả request và response của API cùng một lúc...


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí