Mở đầu
Chào hầu như người, lúc này tôi sẽ trình làng một chủ thể mới, một phương pháp lập trình mới khá phổ biến gần đây mà bản thân tôi trong thừa trình thao tác thấy nó cực kỳ hữu ích, văn minh và clean - Reactive Programing. Trong nội dung bài viết này họ sẽ khám phá các định nghĩa cơ bạn dạng của Reactive programming. Bạn đang đọc: Reactive programming là gì

Reactive programming là gì? vì sao nên dùng nó?
Reactive programming là gì?
Có rất nhiều lý giải định nghĩa lướt thướt khó hiểu. Wikipedia quá thông thường và lý thuyết, . Stackoverflow có câu trả lời rõ ràng nhưng không cân xứng với tín đồ mới bắt đầu.v.v.. Vì vậy tôi cắt giảm lại như sau :
Reactive programming is programming with asynchronous data streamsỞ khái niệm trên chúng ta cần chú ý đến 2 điểm đặc biệt quan trọng Stream & AnsynchronousStream : Khi triển khai 1 task bất kỳ thường bọn họ chỉ cân nhắc 3 nguyên tố :
Giá trị trả về từ task kia (Data)Thông báo lỗi (Erro ví như có)Thời điểm task finish (Completed)Khi lập trình nhất quán (synchronous) việc khẳng định 3 yếu tố trên không cạnh tranh khăn, nhưng khi lập trình bất đồng điệu (asynchronous) việc khẳng định 3 nhân tố này là không thể dễ dàng. Do đó để xử lý vấn đề này ta cần phải có 1 nguyên lý giúp khẳng định được 3 nhân tố trên cả khi lập trình đồng hóa & bất đồng bộ. Funtion Reactive Programming giải quyết vấn đề này bằng phương pháp sử dụng stream nhằm truyền mua dữ liệu: nó rất có thể sẽ emit ra 3 thiết bị : 1 value, 1 error, 1 completed (tín hiệu kết thúc 1 task ) theo 1 trình tự thời hạn từ khu vực phát ra (Producer) tới khu vực lắng nghe (Subscriber).

Tại sao buộc phải dùng nó?
Nếu chỉ dừng lại ở đó thì FRP cũng không tồn tại gì quánh biệt, điều tạo nên sức mạnh mẽ của FRP là việc vận dụng functional programming được cho phép filter (filter, take, scan, …), thay đổi từ stream này qua stream khác (map, flatMap, reduce), hoặc merge các stream thành một stream mới (combine, merge, zip, …) khá thuận lợi mà không làm biến đổi trạng thái của stream ban đầu.Việc thực hiện FRP sẽ nâng cao được trải nghiệm bạn dùng, khi bọn họ muốn ứng dụng phản hồi cấp tốc hơn.Lợi ích tiếp sau là giúp hạn chế lưu trữ, quản lý các state trung gian. Trong lấy một ví dụ clickStream trên, giả dụ như áp dụng cách lập trình thông thường, thì nên khai báo tương đối nhiều biến (state) để lưu trữ quá trình trung gian. Ví dụ: timer, click count collection, … vào FRP, công việc này là không cần thiết nhờ khả năng thay đổi stream (map, flatMap, reduce, ….).Một ưu điểm khác của RP là giúp cho việc xử trí lỗi trong xây dựng bất nhất quán nhẹ nhàng hơn hết sức nhiều. Nếu như khách hàng nào từng handle error khi lập trình sự không tương đồng bộ, multiple thread, thì đã thấy câu hỏi này không hề dễ dàng. RP giúp bóc tách biệt bài toán xử lý lỗi cùng với logic. Vấn đề này giúp cho code trong sáng hơn vô cùng nhiều.Rx được tạo thành từ bỏ 3 điểm chính
**RX = OBSERVABLE + OBSERVER + SCHEDULERS**Observable : Hiểu đơn giản nó là một trong nhà cung cấp,là nguồn cất dữ liệu, thông thường nó sẽ xử trí và bước đầu cung cung cấp dữ liệu cho các compent không giống lắng nghe nó. Một Observable rất có thể phát ra bất kỳ số lượng cửa nhà nào (including zero item), hoặc nó gồm thể ngừng với một message thành công hoặc lỗi.
Xem thêm: 10 Ý Tưởng Kinh Doanh Món Ăn Ngày Tết Dễ Như Ăn Kẹo, 25 Mặt Hàng Bán Chạy Hốt Bạc Dịp Tết 2021
Observers : Observable là nhà cung ứng thì Observer là khu vực tiêu thụ dữ liệu của nhà cung cấp cho Observable emitted. Việc đầu tiên để dìm được tài liệu từ Observable nó sẽ đk (subscibe) bằng phương pháp sử dụng cách thức subscibeOn(), khi đó bất cứ khi nào observable phân phát ra dữ liệu thì tất cả các Observers đăng kí sẽ nhận được dữ liệu trong onNext() callback, trong hàm này chúng ta có thể thực hiện những thao tác không giống nhau ví dụ đối chiếu cú pháp JSON reponse, hoặc update UI. Nếu có 1 error được ném ra từ bỏ Observable thì Observer đăng kí sẽ nhận được lỗi vào onError().Các bước dễ dàng và đơn giản để áp dụng Rx trong ứng dụng:

Observable database = Observable //Observable. This will emit the data .just(new String<>"1", "2", "3", "4"); //OperatorỞ trên đây database là một trong những Observable để phát ra dữ liệu. Trong trường phù hợp này nó vạc ra dữ liệu bằng cách sử dụng strings.just() là 1 trong những operator
Bước 2 : chế tạo observers nhằm tiêu thụ dữ liệuObserver observer = new Observer()
Override public void onNext(String s) //... ;Trong đoạn code trên observer nhận dữ liệu được vạc ra bởi Observable vào hàm onNext() và sử dụng nó, nếu bao gồm lỗi ngơi nghỉ Observable chúng ta cũng có thể bắt được vào onError() của observer.
database.subscribeOn(Schedulers.newThread()) //Observable runs on new background thread. .observeOn(AndroidSchedulers.mainThread()) //Observer will run on main UI thread. .subscribe(observer); //Subscribe the observerTrong bước cuối cùng này, họ sẽ khẳng định việc Observable cùng Observer điều khiển xe trên thread nào để quản lý.subscribeOn(Schedulers.newThread()) xác định database observable chạy xe trên một background thread new được auto tạo ra. Sót lại observeOn(AndroidSchedulers.mainThread()) yêu cầu observer chạy xe trên mainthread. Đây là những gì cơ phiên bản nhât về Reactive programming.
Kết luận
Qua nội dung bài viết này hy vọng tất cả các bạn có cái khái quát cơ bản về Reactive. Để nắm rõ hơn chúng ta cần hợp tác vào thực hành thực tế sử dụng nó, quý phái bài tiếp theo tôi sẽ trình làng với chúng ta làm thể nào áp dụng RxJava và chi tiết operators hay gặp. Kiến thức có hạn mong muốn nhận được sự đóng góp góp của các bạn.Cảm ơn mọi tín đồ !