Rumah >hujung hadapan web >tutorial js >Mengoptimumkan Prestasi: Menggunakan Debouncing dan Thottling

Mengoptimumkan Prestasi: Menggunakan Debouncing dan Thottling

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-30 00:32:08500semak imbas

Optimizing Performance: Using Debouncing and Throttling

?

mari kita sambungkan! Cari saya di github untuk kemas kini mengenai projek baru.


Pengenalan

Aplikasi web berprestasi tinggi adalah penting dalam persekitaran pembangunan pantas hari ini. Pengendalian acara yang cekap adalah kunci, terutamanya apabila berurusan dengan kandungan dinamik dan interaksi pengguna. Debouncing dan throttling adalah teknik yang kuat yang mengoptimumkan prestasi dengan mengawal kekerapan pelaksanaan pengendali acara. Panduan ini meneroka kaedah ini, menonjolkan perbezaan mereka dan pelaksanaan JavaScript dan React praktikal.


Debouncing dan throttling: perbandingan

kedua -dua keberanian dan pendikit mengawal pelaksanaan fungsi, tetapi aplikasi mereka berbeza.

Debouncing: Melaksanakan fungsi hanya selepas tempoh tidak aktif yang ditentukan. Sesuai untuk senario dengan input berterusan, seperti bar carian atau saiz semula tetingkap. Fikirkannya sebagai menunggu "bunyi" untuk menyelesaikan sebelum bertindak.

Throttling: Melaksanakan fungsi paling banyak sekali dalam selang waktu tertentu, tanpa mengira berapa kali peristiwa itu mencetuskan. Berguna untuk peristiwa frekuensi tinggi seperti pergerakan menatal atau tetikus. Ia memastikan kadar pelaksanaan yang konsisten.


pelaksanaan JavaScript mari kita meneroka contoh praktikal mengenai keberanian dan pendikit di JavaScript biasa.

Debouncing (vanila javascript):

Fungsi carian autocomplete adalah kes penggunaan yang sempurna.

<code class="language-javascript">function debounce(func, delay) {
  let timeout;
  return function (...args) {
    clearTimeout(timeout);
    timeout = setTimeout(() => func.apply(this, args), delay);
  };
}

// Example: Debouncing a search input
const searchInput = document.getElementById('search');
const handleSearch = (event) => {
  console.log(`Searching for: ${event.target.value}`);
};

searchInput.addEventListener('input', debounce(handleSearch, 300));</code>

Throttling (vanila javascript):

Mengoptimumkan prestasi skrol adalah aplikasi biasa.

<code class="language-javascript">function throttle(func, limit) {
  let lastFunc;
  let lastRan;
  return function (...args) {
    const context = this;
    if (!lastRan) {
      func.apply(context, args);
      lastRan = Date.now();
    } else {
      clearTimeout(lastFunc);
      lastFunc = setTimeout(() => {
        if (Date.now() - lastRan >= limit) {
          func.apply(context, args);
          lastRan = Date.now();
        }
      }, limit - (Date.now() - lastRan));
    }
  };
}

// Example: Throttling a scroll event
const handleScroll = () => {
  console.log('Scroll event triggered');
};

window.addEventListener('scroll', throttle(handleScroll, 200));</code>

React pelaksanaan

React menawarkan cara yang fleksibel untuk melaksanakan keberanian dan pendikit menggunakan cangkuk. Kami juga boleh memanfaatkan perpustakaan seperti Lodash untuk pelaksanaan yang diperkemas.

Debouncing dalam React:

medan input carian yang dikemukakan.

<code class="language-javascript">import React, { useState, useCallback } from 'react';

const DebouncedSearch = () => {
  // ... (State and debounce function remain the same) ...
};</code>
Throttling in React:

pengendali acara tatal yang diletakkan.

<code class="language-javascript">import React, { useState, useEffect } from 'react';

const ThrottledScroll = () => {
  // ... (State and throttle function remain the same) ...
};</code>
Menggunakan lodash:

Lodash memudahkan pelaksanaan. Pasangnya menggunakan . npm install lodash

<code class="language-javascript">import { debounce, throttle } from 'lodash';
// ... use debounce and throttle directly ...</code>

Aplikasi dunia nyata

Debouncing dan Throttling adalah penting untuk membina aplikasi yang responsif dan cekap.

    Pengoptimuman carian:
  • Debouncing meminimumkan panggilan API dalam ciri carian.
  • tatal lancar:
  • throttling menghalang isu prestasi semasa menatal.
  • Aplikasi yang didorong oleh acara:
  • Kedua-dua teknik meningkatkan pengendalian peristiwa frekuensi tinggi dalam spa dan sistem masa nyata.

Kesimpulan

Debouncing dan throttling adalah penting untuk membuat aplikasi web berprestasi tinggi. Dengan menguruskan kekerapan pelaksanaan acara, teknik ini mengoptimumkan penggunaan sumber dan meningkatkan pengalaman pengguna. Menguasai teknik ini adalah penting untuk mana -mana pemaju web moden.


Meta Description: Meningkatkan prestasi aplikasi web anda dengan debouncing dan throttling. Ketahui Perbezaan, JavaScript dan React Pelaksanaan, dan aplikasi dunia nyata.


tldr: debounce untuk pelaksanaan yang jarang berlaku selepas pecah peristiwa (bar carian); Pendikit untuk pelaksanaan yang konsisten dalam selang (menatal). Gunakan cangkuk reaksi atau lodash untuk pelaksanaan yang mudah. Tingkatkan prestasi dan pengalaman pengguna aplikasi anda!


Kongsi pengalaman anda dengan membantah dan mendekati komen!

Atas ialah kandungan terperinci Mengoptimumkan Prestasi: Menggunakan Debouncing dan Thottling. 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