Giới thiệu reactive programming trong rxswift

Đây là các kiến thức nhưng mà tôi đã khám phá được về ReactiveX. Mặc mặc dù không đi sâu hết về Rx tuy vậy cũng là rất nhiều kỹ năng và kiến thức tổng quan tiền nhưng mà hầu như họ buộc phải thay được. Hy vọng bài hiểu này sẽ hữu ích cùng với chúng ta :">

I. Giới thiệu ReactiveX

ReactiveX là một trong những thư viện giúp xử lí những tác vụ không đồng điệu, những sự kiện cơ bản bằng cách sử dụng tuần từ ObservableReactiveX là sự kết hợp của 3 mô hình Obhệ thống, Interator và Functional programmingMô hình Obhệ thống pattern: ObVPS pattern là 1 software thiết kế pattern mà trong các số đó từng Object được điện thoại tư vấn là 1 trong subject, duy trì một list đông đảo object phụ thuộc vào vào nó được điện thoại tư vấn là obVPS. Và nó đang thông báo Lúc bao gồm bất cứ sự thay đổi nào trong trạng thái của object.Iterator pattern : truy vấn hầu hết phần tử của một đối tượng người sử dụng một biện pháp tuần tự cơ mà ko có tác dụng lộ cách thức trình bày của chúng.Functional Programming : giảm tđọc tối sẽ sự phụ thuộc vào những cực hiếm cổng đầu ra, chỉ dựa vào vào tđê mê số truyền vào.ReactiveX được cho phép xây dựng bất đồng bộ với những luồng quan lại giáp đượcNó đôi khi được Điện thoại tư vấn là “ Functional Reactive sầu Programming” (lập trình phản ứng chức năng) tuy vậy đó là một trong những sự lầm lẫn. ReactiveX có thể hoạt động và nó rất có thể làm phản ứng mà lại xây dựng làm phản ứng tính năng lại là 1 thể nhiều loại khác. Một điểm biệt lập đó là Functional Reactive sầu Programming vận động bên trên các cực hiếm đổi khác liên tiếp theo thời gian, trong những khi ReactiveX vận động trên các quý hiếm rời rộc rạc được phân phát ra theo thời hạn.

Bạn đang xem: Giới thiệu reactive programming trong rxswift

II. Tại sao áp dụng Observer pattern

ReactiveX sử dụng Obhệ thống pattern vìObserver rất có thể điều chỉnh được. Obhệ thống tạo nên các luồng xử lý đồng thời với bất đồng nhất tuy thế vẫn tuần tự cùng với nhauObVPS rât linh hoạt : Obhệ thống không chỉ có rất có thể emit một cực hiếm ngoài ra rất có thể emit một hoặc nhiều những event vô hạn. ObVPS là một trong object trừu tượng nên hoàn toàn có thể được sử dụng mang đến bất cứ trường thích hợp nàoDễ dàng get data sau thời điểm thread cập nhật thành công xuất sắc.

III. Observable

Trong Rx, một obVPS đăng kí một observable. Observable là các mối cung cấp dữ liệu, thông thường nó bắt đầu cung ứng data khi subcribers bước đầu lắng nghe. Nó có thể vạc ra bất kể số lượng chiến thắng nào.

Xem thêm: Hướng Dẫn Chi Tiết Cách Viết Cause And Effect Essay Cho Sinh Viên Chi Tiết Nhất

Một observable rất có thể có rất nhiều subscriber.

Xem thêm: Đề Thi Và Đáp Án Đề Thi Tiếng Anh Thpt Quốc Gia 2017 Đến 2019

Nếu một công trình được vạc ra từ 1 Observable thì onNext() sẽ tiến hành gọi bên trên mỗi subscriber

Để liên kết cùng với Observable thì subscriber đề xuất có các phương thức sau

onNext() : Observable Gọi cách thức này Lúc cơ mà tất cả bất cứ một công trình làm sao được phân phát ra. Tham số truyền vào là hiệu quả nhưng mà bản thân nhấn đượconError(): Observable Gọi cách làm này Lúc bao gồm lỗi xảy ra, dữ liệu ko trả về, khi gồm lỗi nó sẽ không còn Hotline onNext() xuất xắc onCompleted().onCompleted() : Observable sẽ gọi method này lúc nó hotline onNext() lần cuối cùng
*

(1) : là timeline của observable. Time flow trường đoản cú trái qua phải

(2) : các nhà cửa được phân phát ra vày observable

(3) : vun trực tiếp đứng biểu hiện Observable vẫn chấm dứt thành công xuất sắc trọng trách phát ra các item

(4) : đường chnóng chnóng cùng mẫu vỏ hộp hình chữ nhật này bộc lộ một sự thay đổi đang rất được áp dụng đến Observable. Và giải pháp bình chọn phía bên trong vỏ hộp hiển thị thực chất của transformation (phép đưa đổi)

(5) : Nếu có một vài lí vày làm cho Observable bị dừng thừa trinh phân phát với cùng một lỗi thì gạch trực tiếp đứng sẽ được thay thế sửa chữa vì vết X

(6) : hiệu quả trả về của bài toán đưa đổi

IV. Subject

Subject là 1 trong đối tượng người sử dụng đặc biệt nhập vai trò là cầu nối thân observable với obhệ thống (rất có thể hình cần sử dụng subject nlỗi một mặt đường ống chúng ta cũng có thể đặt rất nhiều sản phẩm công nghệ vào một trong những đầu của mặt đường ống cùng nó đã rời khỏi đầu còn lại).Bởi bởi vì nó là 1 trong những Obhệ thống cho nên nó có thể đăng kí một hoặc nhiều observable cùng chính vì nó là 1 trong observable vì thế nó hoàn toàn có thể trải qua các thành quả cơ mà nó quan lại cạnh bên bằng cách tái phát bọn chúng, và nó hoàn toàn có thể phát ra những tác phẩm mớiSubject tất cả 4 nhiều loại :AsyncSubject : chỉ emit quý hiếm ở đầu cuối đc emit vì chưng nguồn observableBehaviorSubject: lúc 1 obVPS đăng kí một BehaviorSubject thì nó đã phạt ra sản phẩm được phát ra ngay sát đấy tốt nhất tính từ thời khắc đăng kíPublishSubject: chỉ phân phát ra thành tựu sau thời gian đăng kíReplaySubject: phát ra tất cả tòa tháp nhưng mà nó bao gồm đến bất kỳ obhệ thống như thế nào đăng kí nó

1. AsyncSubject

Phát ra cực hiếm sau cuối (và chỉ nên quý giá cuối cùng) được vạc ra vì chưng Observable nơi bắt đầu cùng chỉ sau Lúc observable mối cung cấp hoàn thànhHay nói theo một cách khác : nó chỉ push cực hiếm cuối cùng được emitted vị Observable mối cung cấp mang lại toàn bộ các obVPS đang subscribe() nó cùng chỉ sau Lúc observable hoàn thành
*
Nó cũng biến thành phát ra cùng giá trị ở đầu cuối này cho bất kì mang lại bất kể observer làm sao đăng kí sau này. Tuy nhiên trường hợp observable nơi bắt đầu bị giới hạn do một lỗi tạo nên thì AsynxSubject sẽ không phạt ra bất kể một thắng lợi nào
*

2. BehaviorSubject

khi observer subscribe một behavior subject thì tức thì chớp nhoáng behavior subjet đã push cực hiếm sớm nhất nó dấn đc Observable source (hoặc cực hiếm khởi chế tác behavior subject) cùng kế tiếp thường xuyên push data nlỗi bình thườngTuy nhiên nếu như observable nơi bắt đầu bị ngừng với cùng 1 lỗi thì Behavior subject sẽ không còn phân phát ra bất kì một chiến thắng như thế nào cho obhệ thống nào đăng kí nó về sau, nhưng chỉ đơn giản dễ dàng là vẫn đưa thông tin lỗi từ Observable gốc
*

3. PublishSubject

Chỉ phạt ra chiến thắng sau thời hạn đăng kíĐây là các loại thông dụng tốt nhất, nó push số đông data từ bỏ source quý phái mang lại obhệ thống theo thời hạn thực Khi áp dụng publish subject sẽ có chức năng data bị thất lạc trong tầm thời gian từ bỏ Lúc subject được tạo thành cho tới dịp subject được subscribe. quý khách hàng vẫn phải lưu giữ tâm tới điều này Khi thực hiện các loại subject này
*

4. ReplaySubject

push toang bộ quý hiếm đã nhận được nhìn trong suốt vòng đời vào Observer
*

V. Threading Concept

A không tính tiền threaded Model : (mô hình luồng từ do)Trái với mọi gì đều tín đồ thường xuyên suy nghĩ khi nói tới ReactiveX, làm việc tinh thần mạc định nó hoàn toàn ko chạy đa luồng.Cấu trúc Rx bao hàm : 1 Obsevable theo sau vì 0 hoặc những Operator theo sau vì 1 subcriberOperator là một tập đúng theo hầu hết hàm có thể sử dụng giữa Observable cội và subscriber với rất nhiều tính năng nlỗi tính toán, thanh lọc hay chuyển đổi tài liệu.Với cấu trúc này thì concept threading mạc định là:Các thành phần tính toán nhằm tạo cho Observable nơi bắt đầu được điều khiển xe trên thread cơ mà hàm subscribe() được Gọi đếnCác phần tính tân oán của một Operator được điều khiển xe trên thread nhưng mà Operator nghỉ ngơi trước nó được chạy. Nếu trước nó không tồn tại một Operator như thế nào không giống, nó sẽ được điều khiển xe trên thread tạo thành Observable gốcCác phần tính toán thù của một subscriber được điều khiển xe trên thread mà Operator nghỉ ngơi trước nó được chạy. Nếu trước nó không có một operator như thế nào khác, nó sẽ được điều khiển xe trên thread tạo nên Observable gốcCode sample :

private ObservableInteger> getANumberObservable() { return Observable.defer(new Func0ObservableInteger>>() {

Chuyên mục: Blogs