Concurrency 工人完成后的处理

Concurrency 工人完成后的处理,concurrency,javafx,Concurrency,Javafx,在RESTAPI上调用方法会生成javafx.concurrent.Worker对象 final Worker<ObservableList<ProductBrand>> retrieve = listDataProvider.retrieve(); final Worker retrieve=listDataProvider.retrieve(); 我希望在Worker完成工作后进行一些操作。如何才能做到这一点?使用Worker的state属性注册侦听器,并处理状态

在RESTAPI上调用方法会生成
javafx.concurrent.Worker
对象

final Worker<ObservableList<ProductBrand>> retrieve = listDataProvider.retrieve();
final Worker 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
}); 
retrieve.stateProperty().addListener((obs、oldState、newState)->{
if(newState==Worker.State.successed){
ObservableList result=retrieve.getValue();
//等等。。。
}else if(newState==Worker.State.FAILED){
Throwable exception=retrieve.getException();
///等等。。。
}
//如果需要,处理其他状态(就绪、计划、运行、取消)
}); 
请注意,此回调将在FX应用程序线程上执行,因此您可以在此处安全地修改场景图元素的状态