Проблема с AsyncCallback.Значение возвращается до выполнения метода onSuccess - PullRequest
0 голосов
/ 08 июля 2019

Я написал следующий код.Этот кусок кода просто в основном извлекает значение из базы данных.Но возникает проблема, что он возвращает значение до завершения метода onSuccess.

Как решить проблему?

private static final SomeServiceAsync service = GWT.create (SomeService.class);

private static boolean valueIndicator = true;

private static boolean checkValueOfVariable() {
    service.isValueTurnedOn(new AsyncCallback<Boolean>() {
        @Override
        public void onFailure(Throwable caught) {
            Window.alert("Failed to retrieve value."+caught.getLocalizedMessage());
        }

        @Override
        public void onSuccess(Boolean value) {
            valueIndicator = value;
        }
    });
    return valueIndicator;
}

Я хочу вернуть значение после выполнения метода onSuccess.

1 Ответ

1 голос
/ 09 июля 2019

Это не будет работать.

Вызов сервера асинхронный. Таким образом, метод вернет значение до того, как будет возвращен вызов сервера.

Использовать обратный вызов:

public interface ReturnHandler {

  void onReturn(Boolean value);

}

Попробуйте:

private static void checkValueOfVariable(ReturnHandler handler) {
    service.isValueTurnedOn(new AsyncCallback<Boolean>() {
        @Override
        public void onFailure(Throwable caught) {
            Window.alert("Failed to retrieve value."+caught.getLocalizedMessage());
        }

        @Override
        public void onSuccess(Boolean value) {
            handler.onReturn(value);
        }
    });
}

и позвоните, используя:

checkValueOfVariable(new ReturnHandler() {
  public void onReturn(Boolean value) {
    valueIndicator = value;
  }
)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...