AsyncCallback 问题。在执行 onSuccess 方法之前返回值

Issue with AsyncCallback. Value is returning before onSuccess method gets executed

我写了下面的代码。这段代码基本上只是从数据库中检索值。但是问题正在发生,它在 onSuccess 方法完成之前 returning 值。

如何缓解这个问题?

private static final SomeServiceAsync 服务 = 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;
}

我想return执行onSuccess方法后的值。

这行不通。

服务器调用是异步的。因此,该方法将 return 服务器调用 returned 之前的值。

使用回调:

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;
  }
)

希望对您有所帮助。