parallel (): Хотите знать, завершен ли хотя бы один рельс (преобразование в Maybe) - PullRequest
0 голосов
/ 15 января 2019

Я хочу скачать файл из нескольких возможных мест. Каждое местоположение имеет три возможных результата:

  • ошибка (например, тайм-аут, 404)
  • успех с новым файлом (200)
  • без изменений (304)

Я хочу сделать различие между:

  • все загрузки не удалось
  • все загрузки завершились неудачно или возвращены без изменений
  • У меня есть хотя бы один успех

Мой (псевдо) код:

Flowable.just(url1, url2...)
.parallel()
.runOn(Schedulers.computation())
.map( ...http download ) 
.filter( ... status code == 200 )
.map( ... parse content ...)
.reduce( ..find newest file..)

Моя проблема: я не могу отличить ошибки от неизмененных.

Что бы я хотел получить в результате:

A Может быть, это дает мне следующие звонки:

  • onError: если все URL-адреса потерпели неудачу
  • onNext: если хотя бы один URL вернул 200
  • onComplete: если хотя бы один URL имеет , а не вернул ошибку

Возможно ли это?

...