Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Melambatkan Pengendalian Acara Keyup untuk Mengoptimumkan Carian AJAX?
Melengahkan Pelaksanaan Pengendali Kekunci untuk Penaipan Pengguna
Mencari setiap ketukan kekunci dalam medan carian boleh membawa kepada permintaan AJAX yang berlebihan. Untuk membetulkannya, adalah wajar untuk memperkenalkan kelewatan yang mencetuskan carian hanya apabila pengguna berhenti menaip untuk tempoh tertentu. Kaedah tradisional seperti setTimeout belum terbukti berkesan.
Pendekatan alternatif melibatkan fungsi berikut:
function delay(callback, ms) { var timer = 0; return function() { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function () { callback.apply(context, args); }, ms || 0); }; }
Integrasi dengan pengendali acara keyup boleh dicapai seperti berikut:
$('#input').keyup(delay(function (e) { console.log('Time elapsed!', this.value); }, 500));
Fungsi ini menerima panggilan balik dan kelewatan dalam milisaat (ms). Ia menggunakan clearTimeout untuk mengelakkan pemasa bertindih dan menjadualkan pemasa baharu pada setiap acara keyup. Apabila kelewatan tamat tempoh, ia akan memanggil panggilan balik dengan konteks dan hujah yang dihantar kepada pengendali acara asal.
Penyelesaian ini berkesan menangguhkan pelaksanaan pengendali kekunci sehingga pengguna berhenti menaip untuk tempoh yang ditentukan, mengoptimumkan carian pengalaman dan mengurangkan permintaan AJAX yang tidak perlu.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melambatkan Pengendalian Acara Keyup untuk Mengoptimumkan Carian AJAX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!