«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Устранение дребезга и регулирование в JavaScript: когда и почему их следует использовать

Устранение дребезга и регулирование в JavaScript: когда и почему их следует использовать

Опубликовано 2 ноября 2024 г.
Просматривать:840

Debouncing vs Throttling in JavaScript: When and Why You Should Use Them

JavaScript великолепно делает ваши веб-приложения динамичными и интерактивными, но есть одна вещь, с которой он сам по себе не справляется: частые события. Подумайте о таких вещах, как изменение размера окна, прокрутка и ввод текста в полях поиска. Если ими не управлять должным образом, они могут переполнить ваше приложение триггерами событий, что замедлит работу и усложнит работу пользователя. Именно здесь на помощь приходят устранение дребезга и регулирование. Эти методы помогают вам контролировать частоту выполнения определенных функций, обеспечивая быстроту и отзывчивость вашего приложения.

В этой статье мы разберем устранение дребезжания и регулирование, покажем вам, когда их использовать, и предоставим реальные примеры, чтобы увидеть их в действии. Давайте углубимся в эти важные методы оптимизации производительности JavaScript!

Что такое дебаунсинг?

Как это работает

Думайте о том, чтобы отказаться от ответа, как о ожидании, пока кто-то закончит говорить, прежде чем вы приступите к ответу. Если вы когда-нибудь были в разговоре, где кто-то постоянно вас перебивал, вы поймете идею! Ключевая концепция устранения дребезга заключается в том, что она задерживает выполнение функции до тех пор, пока не пройдет определенное время с момента последнего запуска события.

Проще говоря, если событие (например, набор текста пользователем) продолжает происходить быстро, устранение дребезга гарантирует, что соответствующая функция (например, поисковый запрос) будет выполнена только после того, как пользователь остановится в течение заданного периода.

Когда использовать устранение дребезга

Вам следует использовать устранение дребезга, если вы хотите ограничить чрезмерные вызовы функций, вызванные частым вводом данных пользователем. Классический пример: у вас есть окно поиска и вы хотите вызывать API каждый раз, когда пользователь что-то печатает. Без устранения дребезга API можно было бы вызывать для каждого нажатия клавиши, создавая ненужную нагрузку на ваш сервер. При устранении дребезга API вызывается только тогда, когда пользователь перестает печатать.

Устранение дребезга в коде

function debounce(func, delay) {
    let timeoutId;
    return function(...args) {
        clearTimeout(timeoutId);
        timeoutId = setTimeout(() => func.apply(this, args), delay);
    };
}

// Usage
const searchInput = document.getElementById('search');
searchInput.addEventListener('input', debounce(() => {
    console.log('API call made!');
}, 300)); // Only executes 300ms after the last keystroke

В этом примере функция устранения дребезга гарантирует, что вызов API произойдет только через 300 миллисекунд после того, как пользователь перестанет печатать.

Что такое дросселирование?

Чем это отличается от дебаунсинга

Теперь давайте поговорим о регулировании. Если устранение дребезжания ждет ответа, пока не утихнет болтовня, дроссельное регулирование похоже на гаишника, который пропускает только одну машину каждые несколько секунд, независимо от того, сколько машин ждут. Это гарантирует, что функция будет вызываться не чаще одного раза за установленный период, даже если событие срабатывает неоднократно.

Когда использовать регулирование

Вы захотите использовать регулирование , когда вам нужно обеспечить стабильное выполнение с течением времени. Например, когда пользователь прокручивает страницу вниз, событие прокрутки может срабатывать десятки раз в секунду. Без регулирования ваше приложение может работать медленнее, поскольку пытается обработать все эти события. Регулирование ограничивает частоту выполнения обработчика событий прокрутки, повышая производительность.

Регулирование в коде

function throttle(func, limit) {
    let lastCall = 0;
    return function(...args) {
        const now = Date.now();
        if (now - lastCall >= limit) {
            lastCall = now;
            func.apply(this, args);
        }
    };
}

// Usage
window.addEventListener('scroll', throttle(() => {
    console.log('Scroll event!');
}, 1000)); // Executes at most once every 1000ms

Здесь функция регулирования гарантирует, что обработчик событий прокрутки выполняется только один раз каждые 1000 миллисекунд, гарантируя, что ваше приложение не будет перегружено.

Реальные примеры

Давайте рассмотрим эти методы в более практическом контексте. Допустим, вы создаете приложение React, в котором пользователи вводят текст в поле поиска. Вы можете отменить входные события, чтобы предотвратить переполнение вашего сервера вызовами API. Альтернативно, если вы отслеживаете, как далеко пользователь прокрутил страницу, вы можете использовать регулирование для оптимизации производительности.

Устранение дребезга в React

import { useState } from 'react';

function SearchComponent() {
    const [query, setQuery] = useState('');

    const handleSearch = debounce((value) => {
        // API call with the value
        console.log('Searching for:', value);
    }, 300);

    return (
         {
                setQuery(e.target.value);
                handleSearch(e.target.value);
            }}
        />
    );
}

Регулирование событий прокрутки

import { useEffect } from 'react';

function ScrollTracker() {
    useEffect(() => {
        const handleScroll = throttle(() => {
            console.log('Scrolling...');
        }, 1000);

        window.addEventListener('scroll', handleScroll);
        return () => window.removeEventListener('scroll', handleScroll);
    }, []);

    return 
Scroll to see throttling in action!
; }

Лучшие практики оптимизации производительности

Устранение дребезга или дросселирование: когда выбирать

Вот краткое практическое правило:

  • Устранение дребезжания идеально подходит, когда вы хотите подождать, пока пользователь перестанет что-то делать. Например, при вводе в строку поиска.
  • Регулирование работает лучше всего, если вы хотите обеспечить последовательное периодическое выполнение с течением времени. Он идеально подходит для прокрутки или изменения размера окон.

Когда вы знаете, с каким событием вы имеете дело и как часто оно срабатывает, вы можете выбрать правильную технику для работы.

Заключение

Контроль частых событий в JavaScript необходим для оптимизации производительности, и как устранение дребезга, так и регулирование предлагают мощные решения. Понимая, когда использовать каждый из них, вы можете сделать свои веб-приложения более плавными и отзывчивыми, будь то обработка входных данных поиска, изменение размера окон или управление событиями прокрутки.

В следующий раз, когда вы обнаружите, что ваше приложение увязло в слишком большом количестве событий, спросите себя: Должен ли я устранить дребезг или ограничить его? Вы будете рады, что сделали это!

Готовы попробовать? В следующий раз, когда вы будете работать над проектом, попробуйте эти методы. Вы будете удивлены, насколько плавнее все станет!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/paharihacker/debouncing-vs-throttling-in-javascript-when-and-why-you-should-use-them-1l09?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163 .comdelete
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3