Skip to content

关于显示loading的问题 #3

@cctanfujun

Description

@cctanfujun

我现在的需求网络请求如果请求结果在200毫秒内就不显示loading界面,如果请求超过200毫秒就显示loading界面,然后返回结果时候显示正常界面,用rx应该怎么实现比较好呢?

我现在的实现方式是把一个空数据和请求mergewith 但是我觉得这样非常不rx,想问问大家觉得怎么搞?

Observable<ValueBlock> loading = Observable.just(emptyList).delay(200, TimeUnit.MILLISECONDS);
        mAppMainModel.getMainData()
                .mergeWith(loading)
                .filter(valueBlock -> {
                    return (valueBlock.nav != null && valueBlock.nav.size() != 0) || mNavItems == null;
                })
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ValueBlock>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        mCompositeDisposable.add(d);
                    }

                    @Override
                    public void onNext(ValueBlock block) {
                        //nav数据
                        if (block.nav == null || block.nav.size() == 0) {
                            mView.showProgress("tt");
                        } else {
                            mNavItems = block.nav;
                            mView.setupViewPager(mNavItems, JSON.toJSONString(block.blocks));
                        }
                    }

                    @Override
                    public void onError(Throwable e) {
                        e.printStackTrace();
                    }

                    @Override
                    public void onComplete() {
                        mView.hideProgress();
                    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions