ユーザーが文字を入力できるテキストボックスがあり、提案ボックスが開きます。キーアップイベントでイベントを発生させました。タイマーが設定された後、非同期呼び出しが開始され、非同期呼び出しが成功すると、提案リストがロードされます。問題は、文字の入力を開始すると、ブラウザの読み込み記号が表示され、非同期呼び出しが正常に返され、提案が表示されるまで、テキストボックスにそれ以上文字を入力できないことです。重要なのは、呼び出しが非同期の場合、ブラウザーがUIのイベントをブロックする理由です。
以下はコードです。火災イベントは非同期呼び出しを呼び出し、火災イベントの終了メッセージを出力します。したがって、非同期呼び出しはブロックされません。public void showSuggestions(final String query){
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();
}
}