我有Java代码大致是这样的:返回在内部回调获得一个字符串从外部函数
public String render(String str) {
byte[] b = [serialize str]
client.sendRequest(b, new Callback<byte[]>() {
@Override
public void onDone(byte[] data) {
String res = [convert data back to String]
// TODO: return this string in the outer function
});
return "???";
}
我有问题越来越呈现函数返回,我从获得的字符串onDone回调。我尝试初始化SendRequest调用之外的String res,但遇到变量不是最终的问题。
我也在阅读Java期货here。从那以后,我想我可以设置一个Future,然后调用isDone()来确保它已设置?然而,这段代码看起来很冗长,我想知道是否有更简单的解决方案。
这里没有要求/相关的序列化。无论存在什么问题 - 范围/时间安排问题 - 都将继续取消任何提及。 IE浏览器。尝试“返回数据”,这不会出于相同的概念原因。使用一个异步代码,模型*必须完全切换到一个异步模型(包括Futures,它只是推迟决策,或者在回调中进一步处理),或者使用同步方法(可以包括'同步等待异步方法去完成')。 – user2864740