У меня есть текст редактирования, который позволяет пользователю вводить имя пользователя и после ввода имени пользователя отправляется значение в db, чтобы проверить, существует ли имя пользователя, если нет, то дальнейшие операции разрешены иначе, отображается ошибка.Переопределение вызова в потоке
На данный момент это мой текущий код.
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 -> {
});
});
На данный момент сетевой запрос делается в конце, но это возможно сделать запрос до и один раз я получаю данные я выполнять некоторые другие операции на потоке.
Можно ли добавить других операторов после размещения карты и до подписания? Например, может быть, фильтр, если это так, будут обрабатываться данные, которые я получаю от вызова api, или работает ли мой оригинальный наблюдаемый? –
Конечно, это возможно :-) Это красота Rx. Когда вы применяете оператор flatMap, каждый предмет, который приходит к нему, превращается в наблюдаемый. Все события, которые испускаются этими наблюдаемыми, которые вы определили в flatMap, будут перенаправлены обратно в исходный поток. Поэтому после flatMap вы работаете с результатами конечной точки API, которая соответствует вызову метода apiService.isAvailable(). Вы можете делать с ними все, что хотите, это регулярный поток. – koperko
Тем не менее, я вижу, где я мог бы вас смутить. Я не переименовал аргумент в методе подписки. Конечно, это не имя пользователя больше, а результат конечной точки isAvailable(). Я отредактирую свой ответ – koperko