pra*_*ani 3 java asynccallback
final Function<Boolean, ? extends Class<Void>> functionCallback = (Boolean t) -> {
if(t) {
plugin.setIsInstalled(Boolean.TRUE);
}
return Void.TYPE;
};
foo.install(plugin,functionCallback);
if(plugin.getIsInstalled().getValue())
return "done";
else
return "not done";
Run Code Online (Sandbox Code Playgroud)
if(plugin.getIsInstalled().getValue())一旦回调完成执行,我想检查一下。如何在回调完成执行之前阻止执行此 if 条件?
您可以使用FutureTask在回调函数中调用的 a :
final FutureTask<Object> ft = new FutureTask<Object>(() -> {}, new Object());
final Function<Boolean, ? extends Class<Void>> functionCallback = (Boolean t) -> {
if(t) {
plugin.setIsInstalled(Boolean.TRUE);
ft.run();
}
return Void.TYPE;
};
foo.install(plugin,functionCallback);
ft.get();
if(plugin.getIsInstalled().getValue())
return "done";
else
return "not done";
Run Code Online (Sandbox Code Playgroud)
Future.get等到run方法被调用,您还可以使用get接受超时的-method,以便您可以在花费太长时间时对此做出反应。