gpt4 book ai didi

java - for 循环中的异步回调

转载 作者:行者123 更新时间:2023-12-02 03:37:03 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com