mshatunov
6/19/2018 - 2:30 PM

reactor

subscribe();  //запустить исполнение..

// .. и сделать что-то с каждым полученным значением
subscribe(Consumer<? super T> consumer);

 // .. и сделать что-то в случае исключения
subscribe(Consumer<? super T> consumer, Consumer<? super Throwable> errorConsumer);

// .. и сделать что-то по завершению
subscribe(
        Consumer<? super T> consumer, 
        Consumer<? super Throwable> errorConsumer, 
        Runnable completeConsumer
);
Mono<Void> asyncCall = Mono.fromRunnable(() -> {
    //тут какая-то логика
    //возвращаем Mono.empty() после выполнения
});
asyncCall.subscribe();
  Flux
    .interval(Duration.ofSeconds(1))
    .doOnEach(signal -> logger.info("{}", signal.get()))
    .blockLast();
//получаем последовательность идентификаторов
userService.getFavoriteMemes(userId)
   .flatMap(memeService.getMemes) //закачиваем мемы по ID
   //если пусто, берём мемы из сервиса предложений
   .switchIfEmpty(suggestionService.getSuggestedMemes()) 
   .take(5) // нам нужно не больше 5 элементов
   .publishOn(UiUtils.uiThreadScheduler()) //отдаём данные в UI-поток
   .subscribe(favorites -> {
       uiList.show(favorites); //вызывается в UI-потоке
   }, UiUtils::errorPopup); //колбэк на случай ошибки