Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Melambatkan Pengendalian Acara Keyup untuk Mengoptimumkan Carian AJAX?

Bagaimanakah Saya Boleh Melambatkan Pengendalian Acara Keyup untuk Mengoptimumkan Carian AJAX?

Susan Sarandon
Susan Sarandonasal
2024-12-06 21:33:14379semak imbas

How Can I Delay Keyup Event Handling to Optimize AJAX Searches?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn