我是 GWT 新手,所以请帮助我。我有 for 循环 n 次循环;每个循环都会将 AsyncCallback
发送到服务器并获取值。但我想停止每个循环直到服务器响应。例如
for (final String cardId : cardIds) {
cmain.ivClient.getm(cardId, cardInfoKeys, new AsyncCallback<String[]>() {
@Override
public void onFailure(Throwable caught) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void onSuccess(String[] result) {
cardPar = result;
}
}
}
如何每次都等待循环?
最佳答案
基本上,在这种情况下你不能真正使用 for 循环。
如果您知道,将会有 3 个调用,您可以堆叠异步调用:
在每个 onSuccess()
中,您将触发下一个异步调用。
如果您不知道会有多少个,您可以通过 onSuccess
调用进行递归。
void callServer(final List<String>cardIds) {
if(cardIds.isEmpty()) return;
cmain.ivClient.getm(cardId, cardInfoKeys, new AsyncCallback<String[]>() {
@Override
public void onFailure(Throwable caught) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void onSuccess(String[] result) {
doImportantMatterWith( result );
cardIds.remove(0);
callServer(cardIds);
}
}
}
这相当难看,但会确保只有当前一个调用成功返回时才会触发下一个调用。
我建议不要实现此异步调用链,而是立即从服务器请求所有结果。
关于java - for 循环中的异步回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37326813/