Я пытаюсь выполнить MultiPart загрузку на S3 асинхронным способом с RxJava 2.
compile "io.reactivex.rxjava2:rxjava:2.2.2"
У меня есть Flowable
деталей.Для каждой части я вызываю метод для объекта TransferManager
, который немедленно возвращает объект Upload
.
Upload::isDone
метод javadoc выглядит следующим образом:
/**
* Returns whether or not the transfer is finished (i.e. completed successfully,
* failed, or was canceled).
*
* @return Returns <code>true
, если передача завершена(т.е. успешно завершено, * не выполнено или было отменено).Возвращает false
, если не указано иное.* / public boolean isDone ();
Вот что я пытаюсь сделать:
TransferManager
:
public class TransferManager {
public Upload transfer(Part part) {
return new Upload();
}
}
Part
:
public class Part {}
Upload
:
import java.util.Random;
public class Upload {
public boolean isDone() {
return new Random().nextInt(10) == 1;
}
}
Это то, что я делаю:
TransferManager tm = new TransferManager();
Flowable.just(new Part(), new Part(), new Part(), new Part(), new Part())
.map(part -> tm.transfer(part))
.subscribe(upload -> {
do {
} while(!upload.isDone());
});
Каким будет RxJava способ сделать это?