Я использую RxJava для перебора списка файлов, выполняю сетевой вызов для загрузки каждого файла, затем собираю файлы, которые были успешно загружены в список, и сохраняю эти файлы в подписчике в случае успеха.
Этот код работает, за исключением случаев, когда возникает ошибка.Поведение должно состоять в том, что он регистрирует ошибку и продолжает работу, что и происходит, за исключением случаев, когда возникает ошибка. Лямбда-подписчик onSuccess никогда не вызывается.
Ожидает ли наблюдатель, что будет выдано такое же количество элементов, как воригинальный повторяемый?Как я могу пропустить ошибки и завершить их после того, как все элементы будут повторены?Есть ли что-то, кроме Single.never()
, которое не выполнит передачу ошибки в нисходящий поток?
queryFiles()?.let { files ->
Observable.fromIterable(files)
.flatMapSingle { file ->
uploadFile(file)
.onErrorResumeNext { error ->
log(error)
Single.never() // if this is returned onSuccess is never called
}
.map { response ->
file.id = response.id
file
}
}
.toList()
.subscribe( { uploadedFiles ->
persist(uploadedFiles) // if error occurs above, this is never called
}, { error ->
log(error)
})
}