У меня есть пользовательский класс, назовите его Builder
. Он имеет метод act()
, который выполняет асинхронную операцию. Когда операция будет выполнена, я хочу испустить событие.RxJava: Смотреть пользовательский класс
Как это сделать в RxJava?
Похоже, что это простая задача, но мне еще предстоит увидеть правильный способ RxJava.
Более подробно, типичный act()
метод выглядит так:
class Builder
public void act() {
processRunner.runAsync(new ProcessRunner.ProcessResultHandler(){
@Override
public void onComplete(int result) {
// Emit event
}
});
}
И что я хочу в классе потребляющего, чтобы позвонить:
builder.act()
и как-то быть предупреждены, когда onComplete()
называется.
Я также контролировать ProcessRunner
, так что я хотел бы преобразовать, что RxJava и цепочки результатов, но сейчас я возьму простую USECASE!
PublishSubject как я в конечном итоге делает это одно, но я положил его на самом Builder классе. Спасибо за дополнительную информацию, это выглядит как хороший подход! – mtyson
Просто имейте в виду, что Субъекты являются «Горячими Наблюдателями», что означает, что он может излучать предметы, даже если никто не подписался на него. Например, ваш коммуникатор может начать испускать элементы, когда он не прослушивает его. –
Это верно, но это может обрабатывать внутри класса коммуникатора. Вы можете проверить, подписаны ли они подписчиком или нет. –