Rxjs và reactive programming

     

RxSwift là một trong những thư viện cho phép họ sử dụng Swift một cách khác nhau. Với tủ sách này, thiết kế bất đồng bộ trở đề xuất dễ tiến hành hơn và dễ gọi hơn. Nó chất nhận được bạn xây dựng những ứng dụng có kiến trúc khít sát và rất tốt hơn.

Bạn đang xem: Rxjs và reactive programming

*
Như chúng ta đã biết, một device ( iphone, ipad, macbook, ...) đều phải có bộ CPU với tương đối nhiều nhân và những luồng. Điều kia đòi hỏi, một chương trình tạo ra phải khai quật hết được sức khỏe của đồ vật đó, nhằm nâng cao trải nghiệm thực hiện của bạn dùng. Từ bỏ đó vấn đề lập trình nhiều luồng ra đời nhằm mục tiêu chạy được những tác vụ ( khối code ) song song. Với ngôn từ Swift chúng ta cũng có thể có khôn cùng nhiều phương pháp để implement một áp dụng có các tác vụ bất đồng bộ: NotificationCenter, Closure, Delegate Partern, Grand Central Dispatch và RxSwift.

*
Trong bài viết này chúng ta sẽ thuộc nhau tìm hiểu về Observable và các cách tạo nên một Observable trong Swift. Let"s GOOOOO!!!

1. Observable là gì?Observable là một sequence, Observable sẽ nhả ( emit ) ra sự kiện ( event )Observableimmutable, tức thị mỗi khi sử dụng method trong bộ toolbox (map, flatmap, combine, merge, filter,…) thì sẽ tạo ra 1 Observable new chứ không thay đổi Observable cũ.
*

Observable phát ra 3 nhiều loại event:

.next():event mang giá trị tài liệu mới nhất. Đây đó là các Observers nhận các giá trị giữ lại liệu..error: Observable sẽ xong xuôi với lỗi và không phát ra event..completed:event xong xuôi của chỗi sự kiện, tức là sẽ ko phát ra bất cứ event nào nữa.2. Cách tạo nên một Observable

Sau đây chúng ta sẽ thuộc nhau mày mò cách tạo nên một Observable

2.1 .just()

Trong RxSwift, với thủ tục .just() đã giúp họ tạo ra một Observable phát ra duy nhất một event cùng terminate ngay lập tức.

Xem thêm: Tứ Hành Xung Tuổi Thân Gồm Những Tuổi Nào? Tuổi Thân Hợp Khắc Tuổi Gì?

let disposeBag = DisposeBag() let observable = Observable.just("this is element") observable.subscribe element in print(element) .disposed(by: disposeBag)Result:

next(this is element) completed

2.2 .of()

Với phương thức .of() bọn họ sẽ tạo thành một Observable xuất phát điểm từ 1 chuỗi các bộ phận cho trước. Kiểu tài liệu của Observable là kiểu dữ liệu của dữ liệu truyển vào. Các thành phần sẽ truyền vào trong 1 cách tuần tự, sau khi hoàn thành sẽ tự động hóa terminate.

let disposeBag = DisposeBag() let observable = Observable.of(1, 9, 19, 5) observable.subscribe element in print(element) .disposed(by: disposeBag)Result:

next(1) next(9) next(19) next(5) completed

2.3 .from()

Với cách tiến hành .from( ) cho phép khởi sinh sản một Observable với một chuỗi các bộ phận trong một mảng đến trước. Kiểu tài liệu của Observable đã là kiểu tài liệu của các phần tử trong mảng. Các bộ phận sẽ thứu tự được emit theo sản phẩm tự trong mảng, kế tiếp Observable đã terminate.

let array = <1, 5, 8, 9, 10, 4> let disposeBag = DisposeBag() let observable = Observable.from(array) observable.subscribe element in print(element) .disposed(by: disposeBag)Result:

next(1) next(5) next(8) next(9) next(10) next(4) completed

2.4 .range(start: , count: )

.range(start: , count: ) chất nhận được tạo ra một Observable với mức giá trị thuở đầu (start) và số lượng các element tuần tự được tạo thành (count), kế tiếp sẽ terminate.

let disposeBag = DisposeBag() let observable = Observable.range(start: 1, count: 5) observable.subscribe element in print(element) .disposed(by: disposeBag)Result:

next(1) next(2) next(3) next(4) next(5) completed

2.5 .empty()

Phương thức .empty( ) chất nhận được tạo ra một Observable nhưng mà không có bất kỳ element như thế nào cả. Observable đang chỉ emit ra độc nhất một event .completed nhằm terminate.

Xem thêm: Top 10 Sạc Dự Phòng Nào Tốt Nhất Hiện Nay, +15 Sạc Pin Dự Phòng Tốt Nhất (2021)

let disposeBag = DisposeBag() let observable = ObservableVoid>.empty() observable.subscribe( onNext: element in print(element) , onError: error in print(error) , onCompleted: print("onCompleted") , onDisposed: print("onDisposed") ) .disposed(by: disposeBag)Result:

onCompleted onDisposed

2.6 .never()

Giống với cách thức .empty(), cách làm .never() cho phép tạo ra một Observable không có ngẫu nhiên element làm sao cả dẫu vậy khác với .empty() làm việc chỗ, cách làm .never() đã không khi nào terminate.

let disposeBag = DisposeBag() let observable = ObservableVoid>.never() observable.subscribe( onNext: element in print(element) , onError: error in print(error) , onCompleted: print("onCompleted") ) .disposed(by: disposeBag)Result:

// Not emit anything3. Tổng KếtTrong nội dung bài viết này chúng ta đã cùng nhau tò mò về Observable và các cách tạo ra một Observable. Để hiểu rõ hơn các chúng ta có thể tìm hiểu những tài liệu dưới đây: