避免在列表中插入错误代码的项目。

问题描述 投票:0回答:1

所以我有一个函数,它是用RxJava放置一个调用,然后这个函数应该把返回的元素插入到一个列表中。

所以代码工作正常。我能够检索和购物车列表中的所有项目。然而,如果出现一个由getItem产生的错误代码(getItem放置一个API调用),如401或404......,我想继续在迭代,只是绕过插入。我不能在null的情况下使用onErrorReturnItem并在之后过滤null。

  return Observable.just(itemResponses)
      .flatMapIterable { it }
      .flatMapSingle { itemResponse ->
        itemWarehouse.getItem(itemResponse.id)
            .map { item ->
              itemData(
                  itemResponse.id,
                  item,
                  itemResponse.info,
                  false,
                  itemResponse.result)
            }
      }
      .map { itemData -> cartMap[itemData.id]?.insert(itemData) }
      .toList()
      .map { cartMap.values.toList() }
}

有什么办法吗?

android kotlin exception rx-java
1个回答
0
投票

这应该工作

return Observable.just(itemResponses)
      .flatMapIterable { it }
      .flatMap { itemResponse ->
        itemWarehouse.getItem(itemResponse.id)
            .toObservable()
            .map { item ->
              itemData(
                  itemResponse.id,
                  item,
                  itemResponse.info,
                  false,
                  itemResponse.result)
            }
            .onErrorResumeNext(Observable.empty())
      }
      .map { itemData -> cartMap[itemData.id]?.insert(itemData) }
      .toList()
      .map { cartMap.values.toList() }
© www.soinside.com 2019 - 2024. All rights reserved.