検索連打への対応を考える
ajax通信は非同期通信で、検索処理でリクエスト処理をサーバーに送りレスポンスが戻ってくる間も、通信が出来てしまいます。文字通り非同期なのですが、結果表示を待つ間に何度も押すということが想定されます。
それらを「検索連打」として捉えると、この連打処理の対応はいくつかあります。
検索連打への対応
ボタン自体を使えなくする
物理的に検索後3秒程度はボタンを使用不可にして、3秒後に使えるようにする。こうすると連打自体ができなくなります。これもGET通信である限りURLから何度もやられたら意味がないんですが、それは別の話ということで。
通信中は、通信処理をしないようにする
非同期通信なのにというところですが、非同期通信であっても同じ処理を何度も行うのは意味が異なるからですね。
通信中はフラグを立てておき、再度通信をしようとするとフラグが立っていれば処理をしないというのもやり方の一つになりそうです。
基本この2つになりそうですが、ユーザーの体感的なレスポンスと使いやすさのバランスが問われそうですね。例えば検索ボタンを押すとすぐ表示されるのは軽いですが、とはいえ必要のない通信をするのも、できてしまうのもどうなのかというところでバランスが難しいですね。
本サービスでは、どちらかを導入して対応しています。ボタン不可だとサクサク感がなくなりますが、とはいえ連打しても何も出てこないのも困るし、LOADING表示などはまた一手間かかる感じはしますし、なかなか悩みドロコですね。