我有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