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

DDD
Lepaskan: 2024-10-27 00:41:30
asal
482 orang telah melayarinya

**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;
  };
};
Salin selepas log masuk

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);
        }
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!