我有以下响应式(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/