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;
}
)
希望对您有所帮助。
我写了下面的代码。这段代码基本上只是从数据库中检索值。但是问题正在发生,它在 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;
}
)
希望对您有所帮助。