android - 避免在错误代码列表中插入项目
问题描述
所以我有一个使用 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() }
}
任何想法 ?
解决方案
这应该工作
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() }
推荐阅读
- java - 下拉菜单未填充,我的错误在哪里?
- python - 如何使用里面的 Python 代码运行可执行文件
- python - 解释python中.filter代码的含义
- python - Executemany 因“执行操作失败;无法处理参数”而失败
- c++ - 使用 libcurl 的 TLS 客户端,在服务器端客户端验证失败时不会失败
- string - 如何在 CSV 文件末尾多次添加相同的字符串?
- grpc-java - 如何为 gRPC 生成的 Java 代码实现 com.google.protobuf.BlockingRpcChannel?
- c# - C# 中的内部作用域或嵌套作用域会影响 GC 吗?
- java - chromedriver window.navigator.webdriver 标志在 chrome v80+ 中为真
- elasticsearch - 如何使用不同权重的elasticsearch索引