Я новичок в RxJava и нуждаюсь в некоторой помощи для выполнения моей задачи.RxJava: Возвратите наблюдение после некоторой задержки
1.
У меня есть служба, которая должна рисовать формы со скоростью один за второй и вернуть Observable с этой формой. Это означает, что метод shoud возвращает форму через одну секунду после запроса. Без задержки это работает. Мне сказали использовать таймеры, но у меня проблемы с реализацией.
Я пытался использовать что-то подобное, но не возвращает ничего:
public Observable<PaintedCircle> paint(Shape shape) {
return Observable
.timer(1, TimeUnit.SECONDS)
.flatMap(x -> Observable.just(new PaintedCircle(shape.getSize())));
}
Когда я делаю это без flatMap
он возвращает объект немедленно.
2.
Мой продюсер создает список с некоторым количеством объектов формы (круги и квадраты). Мне нужно выбросить слишком маленькие круги, нарисовать фигуры (сервис, описанный в первом вопросе), а затем поместить фигуры в «ящики» - по 5 штук в каждую коробку в порядке, который они вернули с живописи. Затем все формы из каждой коробки должны быть напечатаны на консоль.
Вопрос: может ли это быть сделано в общем потоке? Как?
Я начал поток, как это, но нужно помочь идти дальше:
Producer producer = new Producer();
Observable.from(producer.produceShapes(20))
.filter(shape -> shape instanceof Square || shape instanceof Circle && shape.getSize() > CIRCLE_MIN_SIZE)
.flatMap(shape -> shape.getPaintingService().paint(shape));
// .subscribe(System.out::print);
}
спасибо, что вы помогли мне вторым вопросом много! О первом вопросе: я хочу, чтобы служба дала мне значение один раз после некоторой задержки (в этом случае - в одну секунду) –
Это означает, что я прошу сервис из моего основного потока рисовать круг, и он должен вернуть меня через одну секунду. –