Избегайте вставки элемента в список с кодом ошибки - PullRequest
0 голосов
/ 01 мая 2020

Итак, у меня есть функция, которая выполняет вызов с использованием Rx Java, а затем эта функция должна вставить элемент, возвращенный в список.

Так что код работает нормально. Я могу получить и все элементы в списке корзины. Однако, если появляется код ошибки, сгенерированный getItem (getItem выполняет вызов API), такой как 401 или 404 ..., я хочу продолжить в итерации и просто обойти вставку. Я не могу использовать onErrorReturnItem с нулевым значением и фильтровать нулевое значение после.

  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() }
}

Есть идеи?

1 Ответ

0 голосов
/ 01 мая 2020

Это должно работать

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() }
...