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...

13thang08 20-04-2018

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

13thang08

1 bài viết.
1 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
Male avatar
0 0
RxSwift: Bài 6: RxCocoa (Part 4) Units ===== Updated ngày 30/06 Updated một chút: Vì những bất tiện và không rõ ràng về thông tin của kipalog, mì...
Bùi Khánh Duy viết 6 tháng trước
0 0
Male avatar
0 0
RxSwift: Bài 6: RxCocoa (Part 5) Disposing with RxCocoa ===== Updated ngày 30/06 Updated một chút: Vì những bất tiện và không rõ ràng về thông t...
Bùi Khánh Duy viết 6 tháng trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
1 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!