未被.filter方法过滤的可观察对象



我使用RxAndroid编写了以下代码:

 Observable.from(check())
                .filter(new Func1<Response, Boolean>() {
                    @Override
                    public Boolean call(Response response) {
                        Log.d(TAG, "******* " + response.getStatus());
                        return true;
                    }
                })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<Response>() {
                @Override
                public void onCompleted() {
                }
                @Override
                public void onError(Throwable e) {

                }
                @Override
                public void onNext(Response response) {
                }
            })
            ;

由于某些原因,Observable.filter()方法没有被调用。

有什么提示吗?

从当前编写示例的方式来看,您似乎有一个竞争条件。调用subscribeOn将导致主线程返回,而另一个线程执行你的可观察链。当主线程到达程序的末尾时,它将终止(可能在从check()发出任何数据之前)。您可以添加.toBlocking()来访问将等待终端事件的块操作符。

int i = Observable.just(1)
    .subscribeOn(Schedulers.io())
    .toBlocking()
    .single();

如果这不是问题(即您正在使用倒计时锁存器或在某种类型的服务器中运行),那么我建议检查从check()返回的iterable或future是否为空。

相关内容

  • 没有找到相关文章

最新更新