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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions