У меня есть небольшой вопрос здесь.
private boolean isSomethingTrue(String param) {
boolean result = false;
myService.hasAlerts(param,new Callback<Boolean>(
@Override
public void onSuccess(Boolean hasAlerts) {
result = hasAlerts;
}
});
return result;
}
В этом коде, как я могу вернуть логическое значение hasAlerts, полученное в обратном вызове? Это не работает, потому что переменная результата не является окончательной. Но когда он окончательный, его нельзя изменить, так что...
Я сделал что-то вроде этого:
private boolean isSomethingTrue(String param) {
class ResultHolder {
boolean result=false;
}
final ResultHolder resultHolder = new ResultHolder();
myService.findBoolean(param,new Callback<Boolean>(
@Override
public void onSuccess(Boolean hasAlerts) {
resultHolder.result = hasAlerts;
}
});
return resultHolder.result;
}
Но есть ли более простое решение для такого случая?
Я обнаружил эту проблему при попытке вызвать службу GWT RPC.
hasAlerts
не асинхронный. Он вызываетonSuccess
перед возвратом. - person David Harkness   schedule 13.07.2012