Tôi đang gặp khó khăn khi tìm một ví dụ về làm thế nào để làm cho một nhà điều hành tùy chỉnh với RxJava 2. Tôi đã xem xét một vài phương pháp:Tạo Toán tử Tùy chỉnh trong RxJava2?
- Sử dụng
Observable.create
, và sau đóflatMap
ing vào nó từ nguồn quan sát được. Tôi có thể làm việc này, nhưng nó không hoàn toàn đúng. Tôi sẽ tạo ra một hàm tĩnh mà tôi cung cấp nguồnObservable
và sau đó là flatMap trên nguồn. Trong OnSubscribe, sau đó tôi khởi tạo một đối tượng mà tôi truyền phát đến, xử lý và quản lý Observable/Emitter (vì nó không tầm thường, và tôi muốn mọi thứ được đóng gói càng tốt). - Tạo một
ObservableOperator
và cung cấp choObservable.lift
. Tôi không thể tìm thấy bất kỳ ví dụ về điều này cho RxJava 2. Tôi đã phải gỡ lỗi vào ví dụ của riêng tôi để đảm bảo rằng sự hiểu biết của tôi về thượng lưu và hạ nguồn là chính xác. Bởi vì tôi không thể tìm thấy bất kỳ ví dụ hoặc tài liệu về điều này cho RxJava 2 Tôi là một chút lo lắng tôi có thể vô tình làm một cái gì đó tôi không phải. - Tạo loại
Observable
của riêng tôi. Điều này có vẻ là cách các toán tử cơ bản hoạt động, nhiều trong số đó mở rộngAbstractObservableWithUpstream
. Mặc dù có rất nhiều thứ đang diễn ra ở đây, và có vẻ như dễ dàng bỏ sót một điều gì đó hoặc làm điều gì đó mà tôi không nên làm. Tôi không chắc mình có nên tiếp cận như thế này hay không. Tôi bước vào bản thân mình thông qua quá trình tinh thần, và nó có vẻ như nó có thể nhận được lông khá nhanh chóng.
Tôi sẽ tiếp tục với tùy chọn # 2, nhưng bạn nên hỏi phương pháp được hỗ trợ để thực hiện điều này là gì trong RxJava2 và cũng tìm hiểu xem có bất kỳ tài liệu hoặc ví dụ nào cho điều này không.
Đối # 2, tôi nghi ngờ đó là cơ chế tương tự được sử dụng để tạo ra tất cả các nhà khai thác bản địa rx' ví dụ 'buffer',' window', v.v. Vì vậy, bạn có thể đi đến github và tìm mã nguồn cho những cái đó, để xem chúng được triển khai như thế nào. – Luciano
@Luciano # 3 là cách tất cả các nhà khai thác bản địa rx được thực hiện. Như tôi đã đề cập ở trên từ việc nhìn vào mã nguồn, nó được lông thực sự nhanh chóng. Rất nhiều phương pháp trợ giúp được gọi ở khắp mọi nơi.'RxAssembly',' DisposableHelper', và chúng được sử dụng một cách chính xác. Nó chắc chắn có thể được thực hiện, nhưng tôi chỉ cần sao chép một định dạng. Tôi muốn chắc chắn rằng tôi hiểu những gì đang xảy ra trong mã của tôi. – spierce7