0
我有一個允許用戶輸入用戶名的編輯文本,一旦輸入用戶名,值被髮送到數據庫以檢查用戶名是否已經存在,如果不是,則允許進一步的操作,否則,錯誤顯示。在流內改造電話
截至目前,這是我目前的代碼。
usernameObservable
.skip(2)
.debounce(800, TimeUnit.MILLISECONDS)
.subscribe(username -> {
Observable<Boolean> observable = apiService.isAvailable(username);
observable.observeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(aBoolean -> {
}, throwable -> {
});
});
對於現在的網絡請求被在端部製成,但是有可能之前發出請求,並且一旦I接收數據我在流上執行一些其它操作。
是否可以在flatMap之後和訂閱之前添加其他運算符?例如,也許是一個過濾器,如果是的話,那麼我會從API調用中收到的數據被處理,還是我的原始可觀察數據被操作? –
當然這是可能的:-)這就是Rx的美麗。一旦你應用了flatMap操作符,它的每個項目都被轉換爲可觀察對象。由您在flatMap中定義的這些observables發出的所有事件將被路由回原始流。因此,在flatMap之後,您將使用與您的方法調用apiService.isAvailable()相對應的API端點的結果。你可以做任何你想要的東西,它是一個普通的流。 – koperko
但是,我看到了我可能會讓你困惑的地方。我沒有在訂閱方法中重命名參數。當然,它不再是用戶名,而是isAvailable()端點的結果。我將編輯我的答案 – koperko