在 onErrorResumeNext 之后未调用 JavaRx doOnNext

JavaRx doOnNext not called after onErrorResumeNext

我试过循环抛出物品并对每个物品进行额外的请求。问题是请求 returns 有可能出错,但我需要继续请求并收集所有数据以列出。但看起来在 onErrorResumeNext 调用后没有其他数据添加到列表中。

Observable<List<TestModel2>> observable = apiTest
            .performTest()
            .flatMapIterable(items -> items)
            .flatMap(testModel -> {
                Log.d("TestItemData", "testModel.userId = " + testModel.userId);
                if (testModel.userId < 5) {
                    return apiTest.performTest2(testModel.userId);
                } else {
                    return apiTest.performTest3(testModel.userId);
                }
            })
            .doOnNext(testModel2 -> {Log.d("TestItemData", "doOnNext --- " + testModel2.title);})
            .onErrorResumeNext(throwable ->{
                            Log.d("TestItemData", "onErrorResumeNext -------- ");
                            return Observable.empty();
                         })
            .toList()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());

在这个例子中 afret performTest() 调用我得到 10 个项目,我需要循环抛出并调用 performTest2() returns 数据 对于某些 ID,我将 performTest3() 称为 returns 404 异常。

a 对于日志中的结果我看到所有 10 testModel.userIds(从 1 到 10)但是 doOnNext 调用直到 onErrorResumeNext 调用,所以在结果列表中我可以得到仅 1 件或 2 件或 3 件

flatMap 中应用 doOnNextonErrorResumeNext:

Observable<List<TestModel2>> observable = apiTest
    .performTest()
    .flatMapIterable(items -> items)
    .flatMap(testModel -> {
        Log.d("TestItemData", "testModel.userId = " + testModel.userId);
        Observable<TestModel2> obs;
        if (testModel.userId < 5) {
            obs = apiTest.performTest2(testModel.userId);
        } else {
            obs apiTest.performTest3(testModel.userId);
        }
        return obs
            .doOnNext(testModel2 -> {
                Log.d("TestItemData", "doOnNext --- " + testModel2.title);
            })
            .onErrorResumeNext(throwable ->{
                Log.d("TestItemData", "onErrorResumeNext -------- ");
                return Observable.empty();
            });
    })
    .toList()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread());