07/09/2018, 17:06

RxSwift: Bài 1 - Observable và Just, Of, From

RxSwift: Bài 1 - Observable và Just, Of, From Đôi lời: Mình viết loạt bài này không phải là loạt bài tut, nó chỉ là những kiến thức mình tự hiểu và tự take note dưới góc nhìn của một newbie. Hiện giờ tài liệu RxSwift khá mơ hồ và đọc rất thiếu chiều sâu. Do đó, mình muốn viết 1 loạt bài cho ...

RxSwift: Bài 1 - Observable và Just, Of, From

Đôi lời: Mình viết loạt bài này không phải là loạt bài tut, nó chỉ là những kiến thức mình tự hiểu và tự take note dưới góc nhìn của một newbie. Hiện giờ tài liệu RxSwift khá mơ hồ và đọc rất thiếu chiều sâu. Do đó, mình muốn viết 1 loạt bài cho những bạn mới có 1 cái gọi là tài liệu kiến thức căn bản, VÀ QUAN TRỌNG NHẤT LÀ MÌNH VIẾT BÀI NÀY CHO BẢN THÂN MÌNH ÔN LẠI KIẾN THỨC.

Cho nên những anh chị level cao có thể ignore loạt bài của mình hoặc giúp mình xây dựng nó tốt hơn thông qua các góp ý. Mình xin cảm ơn.

Trong bài này, mình sẽ không nói Observables là gì hoặc cái khái niệm cơ bản của RxSwift vì mình thấy phần này, google có rất nhiều và rất đầy đủ, các bạn có thể search ở đó. Mình sẽ giới thiệu về just, of, from của Observables. Trước hết, ta tạo 1 function sau:

alt text

Tiếp theo, trong viewDidLoad, các bạn sử dụng lại hàm này, với define 1 vài constants, như sau:

alt text

Ở trên ta đã tạo một observable sequence của kiểu Int và sử dụng method "just" với 1 integer.

1. JUST

Ngay cả cái tên just đã nói rõ, method này sẽ tạo ra 1 observable sequence mà chỉ chứa duy nhất 1 phần tử. Trong Rx thì methods được gọi là operators (toán tử) nhiều hơn.

Option-click vào biến observable, bạn sẽ thấy là nó hiển thị là observable của kiểu Int, duy nhất 1 phần tử.

alt text

Nếu bạn truyền vào một mảng, nó cũng hiển thị kiểu mảng. Nghe có vẻ hơi lạ nhưng mà nói mảng là 1 elements, ko phải nói nội dung của nó.

2. OF
Về phần of này, mình sẽ tạo ra 2 cái observable như sau:

alt text

Đối với observable1, ta cứ nghĩ nó sẽ trả về dạng Array nhưng thực tế không phải vậy, nó sẽ trả về dạng Int bởi vì of nhận tham số variadic.

Option-click vào nó, bạn sẽ thấy cụ thể: (_ elements: Int ...)
alt text

Nếu bạn muốn truyền vào 1 array thì làm như observable2, rồi truyền mảng vào cho nó. Bây giờ ta run để print cả hai observable để xem cụ thể.
alt text

Bạn để ý sẽ thấy observable1 là Swift.Int, nó là observable của các giá trị kiểu Int, còn observable2 là Swift.Array nó là observable của 1 mảng. Bây giờ điều tiếp theo là tạo các observable của các phần tử trong mảng đó? From sẽ giải quyết vấn đề đó.

Bên lề 1 chút, như mình đã nói, just cũng có thế dùng để tạo 1 observable của 1 mảng vào mặc dù nó hơi kì kì.

3. FROM
From tạo ra 1 observable của các phần tử trong một mảng. Khi Option-click, bạn sẽ thấy nó hiển thị kiểu Int, chứ ko phải [Int]
alt text

Và From operator chỉ nhận duy nhất Array, các kiểu khác đều không hợp lệ.

Như vậy mình đã giới thiệu xong bài 1, console của ta hiện giờ khá đơn điệu do ta chưa print gì nhiều. Qua phần sau ta sẽ tiếp tục subscribe.

0