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
24 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 4 năm trước
24 11
{{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á!