我有一个文本框,用户可以在其中输入字符并打开一个建议框。我在 key up 事件上触发了事件。设置了一个计时器,之后触发异步调用,并在异步调用成功时加载建议列表。问题是,当我开始输入字符时,会出现浏览器的加载符号,并且在异步调用成功返回并显示建议之前,它不会让我在文本框中输入更多字符。关键是如果调用是异步的,为什么浏览器会阻止 UI 上的事件。
以下是代码。火事件调用异步调用并打印火事件消息的结束。所以异步调用不会阻塞。public void showSuggestions(最终字符串查询){
ArrayList<PCTSuggestion> list;
System.out.println("Show Suggestions");
if (query.length() > 0) {
GWT.log(query);
list = cacher.getCachedvalues(query);
//list = new ArrayList<PCTSuggestion>();
if(list != null) {
if(!isTabOut() || !isBlurred()) {
display.showSuggestions(PCTSuggestBox.this, list, true, isAutoSelectEnabled(), suggestionCallback);
} else {
display.hideSuggestions();
}
} else {
this.fireEvent(new NewSuggestionEvent(query, limit));
System.out.println("End of Fire Event");
}
//display.showSuggestions(PCTSuggestBox.this, null, true, isAutoSelectEnabled(), suggestionCallback);
} else {
display.hideSuggestions();
}
}