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 -> {

                        });
            });

现在网络请求是在最后发出的,但是是否可以在我收到数据之前发出请求,一旦我收到数据,我就会在流上执行一些其他操作。

4

1 回答 1

2

您正在寻找flatMap运营商。它允许您将一个事件转换为另一个可观察的,这会将排放转发到原始流。您的错误通知也将被转发。

usernameObservable
        .skip(2)
        .debounce(800, TimeUnit.MILLISECONDS)
        .flatMap(username -> apiService.isAvailable(username))
        .subscribe(isAvailableResult -> {
            // react here
        }, throwable -> {
            // show an error here
        });
于 2017-01-22T16:42:06.260 回答