ユーザーが文字を入力できるテキストボックスがあり、提案ボックスが開きます。 私はキーアップイベントでイベントを発生させました。タイマーが設定され、その後に非同期呼び出しが発生し、非同期呼び出しが成功すると、提案リストがロードされます。 問題は、文字の入力を開始すると、ブラウザの読み込みシンボルが表示され、非同期呼び出しが正常に返って候補が表示されるまで、テキストボックスに文字を入力できなくなることです。 要点は、呼び出しがasyncの場合、ブラウザがUIでイベントをブロックする理由です。GWT非同期呼び出しUIをブロックする
以下はコードです。 fireイベントは、非同期呼び出しを呼び出して、終了イベントイベントメッセージを出力します。したがって、非同期呼び出しはブロックされません。 ます。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();
}
}
おそらく、イベントハンドラで非同期呼び出しの完了をブロックしていますか?実際のコードの一部を共有できますか? – bobbymcr