gpt4 book ai didi

GWT 同步调用

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

我在 GWT 中有一个方法,它使用请求的 fire 方法从数据库检索数据,因为你们都知道它是异步的,我从 JS 调用这个方法,所以我需要同步是否可能

private static String retriveLocation(String part)
{
ClientFactory clientFactory = GWT.create(ClientFactory.class);
MyRequestFactory requestFactory = clientFactory.getRequestFactory();
YadgetRequest request = requestFactory.yadgetRequest();
String criteria = "!" + part;
final ArrayList<String> tags = new ArrayList<String>();

request.getTagsStartingWith(criteria, 10, 0).fire(
new Receiver<List<TagProxy>>() {
@Override
public void onSuccess(List<TagProxy> tagList) {
String output = "[";

for (TagProxy pt : tagList) {
output += "{";
output += "\"id\":" + "\"" + pt.getId() + "\",";
output += "\"value\":"
+ "\""
+ pt.getName().replaceAll("\"", "")
.replaceAll("!", "") + "\"";
output += "},";

}
if (output.length() > 2)
output = output.substring(0, output.length() - 1);
output += "]";
tags.add(output);

}

@Override
public void onFailure(ServerFailure error) {

}

});

return tags.size() + "";

}

并从 JS 调用此函数,如下所示:

public static native void exportStaticMethod() /*-{
$wnd.computeLoanInterest =
$wnd.getAutocomplete =@com.yadget.client.Yadget::retriveLocation(Ljava/lang/String;);
}-*/;

onModuleLoad()内部我调用exportStaticMethod()

在html中我有一个按钮,我称之为onclick getAutocomplete(),如下所示:

<input type="button" onclick="alert(getAutocomplete('j'))" value="momo" /> 

问题是大小总是返回 0,因为该方法是异步的,但如果我可以返回值 onSuccess 这将解决我的问题。有什么想法吗?我已经用谷歌搜索了两天了,没有得到答案。

换句话说:

我有 JS 方法,我需要它调用 java 方法来从数据库检索数据,但是是同步的!

示例

如果我有一个 HTML 按钮,单击后我会将 ID 传递给函数,并且我需要通过 GWT 从数据库检索名称并发出警报;只是因为 GWT 是异步的,所以我无法每次都这样做,当我警告结果时,它将是空的,因为它尚未填充。

最佳答案

您无法同步使用 native GWT RPC。我不确定这是否是您要问的,但以下是如何同步调用服务器:

private native String makeSyncAjaxCall(String url, String msgText, String conType)/*-{
var xhReq = new XMLHttpRequest();
xhReq.open(conType, url, false);
if(conType == "POST") xhReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhReq.send(msgText);
var serverResponse = xhReq.status + xhReq.responseText;
return serverResponse;
}-*/;

请注意,我并不是在讨论这是否是个好主意。您可能应该坚持使用异步并将警报放在成功事件上。

关于GWT 同步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166942/

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