Rumah  >  Artikel  >  hujung hadapan web  >  **Mengapakah Fungsi Pendikit JavaScript Mudah Menghapuskan Pelaksanaan Akhir Selepas Tempoh Pendikit?**

**Mengapakah Fungsi Pendikit JavaScript Mudah Menghapuskan Pelaksanaan Akhir Selepas Tempoh Pendikit?**

DDD
DDDasal
2024-10-27 00:41:30483semak imbas

**Why does the Simple JavaScript Throttle Function Eliminate the Final Execution After the Throttle Period?**

Pendikitan Mudah dalam JavaScript

JavaScript menyediakan pelbagai alatan untuk fungsi pendikit, termasuk lodash dan garis bawah. Walau bagaimanapun, untuk keadaan di mana perpustakaan ini mungkin berlebihan, pelaksanaan pendikit tersuai adalah wajar.

Fungsi dan Cabaran Pendikit Sedia Ada

Fungsi pendikit yang disediakan berfungsi, tetapi ia mengemukakan isu. Selepas tempoh pendikit tamat, ia melaksanakan fungsi untuk kali terakhir. Ini boleh membawa kepada gelagat yang tidak diingini dalam senario di mana fungsi tidak sepatutnya menyala beberapa kali.

Fungsi Pendikit Yang Dipertingkat

Untuk menangani isu ini, pertimbangkan fungsi pendikit dipertingkat berikut yang menghapuskan pelaksanaan akhir selepas tempoh pendikit:

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 && 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;
  };
};

Fungsi yang dikemas kini ini menyediakan mekanisme pendikit boleh dikonfigurasikan dengan parameter pilihan untuk mencetuskan tepi hadapan dan mengekor.

Fungsi Pendikit Dipermudah

Jika kebolehubahsuaian tidak diperlukan, fungsi pendikit yang lebih mudah adalah seperti berikut:

function throttle (callback, limit) {
    var waiting = false; 
    return function () { 
        if (!waiting) { 
            callback.apply(this, arguments); 
            waiting = true; 
            setTimeout(function () { 
                waiting = false; 
            }, limit);
        }
    }
}

Fungsi tidak boleh dikonfigurasikan ini mendikit fungsi sasaran kepada selang masa tertentu tanpa memerlukan pilihan yang kompleks .

Atas ialah kandungan terperinci **Mengapakah Fungsi Pendikit JavaScript Mudah Menghapuskan Pelaksanaan Akhir Selepas Tempoh Pendikit?**. 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