RxSwift 8: Tạo observable factories

662

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.

  6 ví dụ để bạn yêu luôn observable
  "Luật 5 giây" giúp Steve Jobs thách thức mọi giới hạn sáng tạo

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)
        }
    }
  1. Tạo 1 biến đánh dấu flip gán giá trị false
  2. Tạo 1 factory observable kiểu nguyên bằng toán tử deferred
  3. Nghịch đảo flip, mỗi khi factory observable được đăng ký
  4. 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:

Xem thêm các việc làm swift it hấp dẫn trên TopDev