gpt4 book ai didi

java - GWT AsyncCallback - 内部类共享

转载 作者:行者123 更新时间:2023-12-01 15:16:06 24 4
gpt4 key购买 nike

我有一个数组 premisasObtenidas,我想用从 GWT AsyncCallback 获取的内容来更新它。该调用工作正常,并且 onSuccess 的代码执行,但是当我尝试将其返回的内容添加到 premisasObtenidas 以将其返回到我的 getPremisasFromServer 方法时,我得到一个空列表。

如何从 getPremisasFromServer 返回我从 AsyncCallback 中成功获取的列表?

private List<PremisaDTO> getPremisasFromServer() {

final List<PremisaDTO> premisasObtenidas = new ArrayList<PremisaDTO>();
//premisasObtenidas is declared on the outside class

myService.mostrarPremisas(

new AsyncCallback<List<PremisaDTO>>() {

public void onFailure(Throwable caught){


Window.alert("Falla al cargar premisas" + caught.getMessage());

}
public void onSuccess(List<PremisaDTO> premisasEnBD){

Window.alert("Exito al obtener premisas " + premisasEnBD.get(0).getTextoPremisa());
for (int i=0; i<premisasEnBD.size();i++){
PremisaDTO aux = new PremisaDTO();
aux.setId(premisasEnBD.get(i).getId());
aux.setTextoPremisa(premisasEnBD.get(i).getTextoPremisa());
premisasObtenidas.add(aux);


}
}
} );

return premisasObtenidas; //here premisasObtenidas has size 0

}

最佳答案

这是一个子例程 - 异步回调不会内联发生 - 即,在您点击 return 语句时,onSuccess 尚未执行。

回调将在未来某个时间发生(当服务器完成它的事情时)。

您可能需要的是

final List<PremisaDTO> premisasObtenidas = new ArrayList<PremisaDTO>();

是类级别(不是函数本地的)。您的 onSuccess() 填充列表,然后调用其他一些类方法来对列表执行某些操作。

这就是 acync 编程的本质。由于涉及服务器并且您不希望客户端变得无 react 。您要求服务器做某事,完成后您(客户端)会被告知(您的程序可以自由地继续在中间做其他事情)。

关于java - GWT AsyncCallback - 内部类共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11587840/

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