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
White
23 11
(Ảnh) Bài này mình làm theo (Link) với ví dụ convert sang RxSwift. Bạn có thể tìm thấy code chạy được trên (Link). Nếu bạn đang gặp khó khăn khi ...
Vu Nhat Minh viết hơn 2 năm trước
23 11
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 11 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á!