現在、jQueryイベントのキープレスでデータベース内のアドレスを取得するツールを使用しています。テキスト入力がフォーカスを失うと、保留中のリクエストをすべてキャンセルして、ユーザーが入力を完了した後にドロップダウンが表示されないようにします。すべてが正常に機能しますが、最後にフォームの次のステップに進むための最終 ajax リクエストを送信します。このリクエストは、これらのリクエストをすべてキャンセルする前よりもはるかに遅くなりました。キャンセルされたリクエストが保留中のリクエストに影響を与えてはならない理由がわかりません(クロムツールのネットワークタブで確認すると、キャンセルされていると確信しています)。私はこのコードを使用しています:
jQuery.xhrPool = [];
jQuery.xhrPool.abortAll = function() {
jQuery(this).each(function(idx, jqXHR) {
jqXHR.abort();
jQuery('.loader').hide();
});
};
jQuery.ajaxSetup({
beforeSend: function(jqXHR) {
jQuery.xhrPool.push(jqXHR);
},
complete: function(jqXHR) {
var index = jQuery.xhrPool.indexOf(jqXHR);
if (index > -1) {
jQuery.xhrPool.splice(index, 1);
}
}
});
jQuery('#my_input').blur(function(){
jQuery.xhrPool.abortAll();
});
私が得られない最適化のトリックがあると思います。助けてくれてありがとう。