RX Java все элементы в текучем состоянии достигают определенного состояния - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь выполнить 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 способ сделать это?

1 Ответ

0 голосов
/ 09 октября 2018

Если я правильно вас понял, вы хотите знать, когда upload.isDone() и после этого выполните какое-либо действие в подписке

.map(part -> tm.transfer(part))
.filter(upload -> upload.isDone())
.subscribe(upload -> {...});

Думаю, это может помочь

...