java - 如何从 RxJava Flowable 更新 JavaFX 进度条?

标签 java rx-java2

我有以下响应式(Reactive)代码:

//JavaFX ProgressBar
ProgressBar progressBar = new ProgressBar(0);

Flowable
        .fromIterable(itemList)
        .parallel()
        .runOn(Schedulers.io())
        .map(item -> {
            Thread.sleep(1000); //imitate expensive computation
            return item.getCode();
         })
         .sequential()
         .observeOn(JavaFxScheduler.platform())
         .subscribe(result -> {
             System.out.println(result);
          });

我想在 flowable 的每次迭代中更新 ProgressBar。

我想到了这样的事情:

int i= 0; //increment on every iteration
int total = itemList.size(); //total number if items in List
progressBar.setProgress((float)(i / total));

但是,我无法弄清楚如何在每次迭代结束时递增变量i

最佳答案

只需在订阅中增加 i

AtomicInteger i = new AtomicInteger(0);
Flowable
    .fromIterable(itemList)
    .parallel()
    .runOn(Schedulers.io())
    .map(item -> {
        Thread.sleep(1000); //imitate expensive computation
        return item.getCode();
     })
     .sequential()
     .observeOn(JavaFxScheduler.platform())
     .subscribe(result -> {
         i.increment();
         progressBar.setProgress((float)(i.get()/itemList.size))
         System.out.println(result);
      });

关于java - 如何从 RxJava Flowable 更新 JavaFX 进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45037299/

相关文章:

java 登录 : can i attach a custom function whenever a new log is written

android - 使用 Retrofit 2 + RxJava 2 接收 Gzip JSON 响应

android - RxJava - 重复 API 调用直到结果完成

spring - 背压在Project Reactor中如何工作?

rx-java - RxJava2 Completable.fromAction() 和 Completable.fromCallable() 的区别?

java - Spring Boot如何将ArrayList转换为Pageable对象

java - 对于 52 英寸显示器、数据驱动应用程序,您会使用什么技术?

java - 将动态数据设置为 @Range 注释的最小和最大属性 - hibernate validator

java - 尝试从资源获取文件时出现 FileNotFound 异常

kotlin - 如何将Flow转换为Flowable?