所以我有一个函数,它是用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() }