Bài viết được sự cho phép của tác giả Lê Xuân Quỳnh
Trong bài 7, chúng ta đã nghiên cứu cách dọn dẹp bộ nhớ cho các observables bằng disposing và những lưu ý để tránh rò rỉ bộ nhớ khi sử dụng chúng.
Thay vì tạo mỗi observable để chờ đợi các subscribers đăng ký, chúng ta có thể tạo 1 factory observable sinh ra các observable cho mỗi lượt đăng ký mới của chúng.
Thêm đoạn code sau:
example(of: "deferred") {
let disposeBag = DisposeBag()
// 1
var flip = false
// 2
let factory: Observable<Int> = Observable.deferred {
// 3
flip = !flip
// 4
if flip {
return Observable.of(1, 2, 3)
} else {
return Observable.of(4, 5, 6)
}
}
- Tạo 1 biến đánh dấu flip gán giá trị false
- Tạo 1 factory observable kiểu nguyên bằng toán tử deferred
- Nghịch đảo flip, mỗi khi factory observable được đăng ký
- Trả về các Observale khác nhau tùy thuộc giá trị của flip
Thêm mã sau vào sau hàm trên:
for _ in 0...3 {
factory.subscribe(onNext: {
print($0, terminator: "")
})
.disposed(by: disposeBag)
print()
}
Kết quả như sau:
--- Example of: deferred ---
123
456
123
456
Vậy ta hiểu là, mỗi lần khi ta đăng ký tới factory observable, thì ta nhận các giá trị khác nhau của chúng theo thứ tự xen kẽ nhau. Điều này để thể hiện rằng factory observable có thể tạo ra các observable khác nhau cho các subscriber.
Vậy là bài hôm nay kết thúc rồi. Trong bài tiếp theo chúng ta sẽ tập trung thực hành các khái niệm chính của Rxswift. Cụ thể bài tới là về Subjects.
Bài viết gốc được đăng tải tại codetoanbug.com
Có thể bạn quan tâm:
- Retrofit là gì? Những kiến thức cần nắm về Retrofit trong Android
- 6 ví dụ để bạn yêu luôn observable
- Giới thiệu về Reactive Programing trong javascript
Xem thêm các việc làm swift it hấp dẫn trên TopDev