在我的JavaFx应用程序中,我向服务器发送请求,需要等待结果。
以下是执行请求的代码:
private void getData(){
RequestExecutor requestExecutor = new RequestExecutor();
Executor exec = Executors.newCachedThreadPool(runnable -> {
Thread t = new Thread(runnable);
t.setDaemon(true);
return t;
});
Task<JSONObject> jsonObjectTask = new Task<JSONObject>() {
@Override
public JSONObject call() throws Exception {
return requestExecutor.getObjectFromJsonArray("settings");
}
};
jsonObjectTask.stateProperty().addListener((observableValue, oldState, newState) -> {
if (newState == Worker.State.SUCCEEDED) {
statusLabel.setText(jsonObjectTask.getValue().getString("subnet"));
} else if (newState == Worker.State.FAILED) {
statusLabel.setText("Incorrect");
}
});
exec.execute(jsonObjectTask);
}
并且
requestExecutor.getObjectFromJsonArray("settings")
返回json对象,如果连接失败,则返回null。
我想为用户显示一个对话框,以便在没有服务器连接等情况下让他再次重试。
如何将任务标记为失败?或者在请求失败的情况下更新GUI的最佳实践是什么?