Rumah  >  Artikel  >  hujung hadapan web  >  Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: * **Bagaimanakah Saya Boleh Melaksanakan Pendikitan Mudah dalam JavaScript?** * **Apakah Cara Terbaik untuk Mendikit Fungsi JavaScript?** *

Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: * **Bagaimanakah Saya Boleh Melaksanakan Pendikitan Mudah dalam JavaScript?** * **Apakah Cara Terbaik untuk Mendikit Fungsi JavaScript?** *

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-25 08:54:28855semak imbas

Here are a few question-based titles that fit the content of your article:

* **How Can I Implement Simple Throttling in JavaScript?** 
* **What's the Best Way to Throttle a JavaScript Function?**
* **Need to Prevent Overwhelm? Here's How to Throttle Yo

Pendikitan Mudah dalam JavaScript

Dalam JavaScript, pendikitan ialah teknik untuk mengehadkan pelaksanaan fungsi kepada selang masa tertentu. Ini berguna apabila anda ingin mengelak daripada membebankan sistem dengan panggilan fungsi yang berlebihan.

Pelaksanaan Pendikit Sedia Ada

Perpustakaan seperti lodash dan garis bawah menyediakan fungsi pendikit terbina dalam. Walau bagaimanapun, termasuk keseluruhan perpustakaan ini untuk tugas yang mudah boleh menjadi berlebihan.

Fungsi Pendikit Tersuai

Berikut ialah fungsi pendikit tersuai yang boleh digunakan sebagai penyelesaian kendiri:

<code class="javascript">function throttle(fn, threshhold, scope) {
  threshhold || (threshhold = 250);
  var last,
      deferTimer;
  return function () {
    var context = scope || this;

    var now = +new Date,
        args = arguments;
    if (last &amp;&amp; now < last + threshhold) {
      // hold on to it
      clearTimeout(deferTimer);
      deferTimer = setTimeout(function () {
        last = now;
        fn.apply(context, args);
      }, threshhold);
    } else {
      last = now;
      fn.apply(context, args);
    }
  };
}

Penambahbaikan: Mengelakkan Perlaksanaan Pendua

Kod yang disediakan, walau bagaimanapun, mempamerkan isu di mana ia boleh menyalakan fungsi semula setelah selang pendikit telah berlalu. Untuk menangani perkara ini, kami boleh mengubah suai fungsi seperti berikut:

<code class="javascript">function throttle(fn, threshhold, scope) {
  threshhold || (threshhold = 250);
  var last,
      deferTimer;
  return function () {
    var context = scope || this;

    var now = +new Date;
    if (now < last + threshhold) {
      return; // prevent subsequent execution
    }

    last = now;
    fn.apply(context, arguments);
  };
}

Fungsi Pendikit Terperinci

Untuk lebih fleksibiliti dan pilihan tambahan, anda boleh merujuk kepada pelaksanaan berikut :

<code class="javascript">function throttle(func, wait, options) {
  var context, args, result;
  var timeout = null;
  var previous = 0;
  if (!options) options = {};
  var later = function() {
    previous = options.leading === false ? 0 : Date.now();
    timeout = null;
    result = func.apply(context, args);
    if (!timeout) context = args = null;
  };
  return function() {
    var now = Date.now();
    if (!previous &amp;&amp; options.leading === false) previous = now;
    var remaining = wait - (now - previous);
    context = this;
    args = arguments;
    if (remaining <= 0 || remaining > wait) {
      if (timeout) {
        clearTimeout(timeout);
        timeout = null;
      }
      previous = now;
      result = func.apply(context, args);
      if (!timeout) context = args = null;
    } else if (!timeout &amp;&amp; options.trailing !== false) {
      timeout = setTimeout(later, remaining);
    }
    return result;
  };
};</code>

Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel anda: * **Bagaimanakah Saya Boleh Melaksanakan Pendikitan Mudah dalam JavaScript?** * **Apakah Cara Terbaik untuk Mendikit Fungsi JavaScript?** *. 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