Worker完成后处理
问题描述:
在REST API上调用方法会产生一个javafx.concurrent.Worker
对象。Worker完成后处理
final Worker<ObservableList<ProductBrand>> retrieve = listDataProvider.retrieve();
我想在Worker
完成其工作后发生一些操作。我怎样才能做到这一点?
答
注册与Worker
的state
属性监听器,并处理状态转换:
retrieve.stateProperty().addListener((obs, oldState, newState) -> {
if (newState == Worker.State.SUCCEEDED) {
ObservableList<ProductBrand> result = retrieve.getValue();
// etc...
} else if (newState == Worker.State.FAILED) {
Throwable exception = retrieve.getException();
/// etc...
}
// handle other states (READY, SCHEDULED, RUNNING, CANCELLED) if needed
});
注意这个回调将在FX应用程序线程来执行,这样你就可以安全地修改的元素的状态这里的场景图。
它的工作原理。谢谢。 – 2014-10-06 16:39:43