Snips & Tips
Snips & Tips
  • Snips & Tips
  • 📊Data Science
    • Polars Dataframe Library
    • Loading large data
    • Pandas
      • Pandas Apply Function
    • Apache Spark
      • Custom Transformer
    • Data Visualizations
    • Jupyter Notebooks
      • Jupyter Notebook Structure
    • Probability
    • Statistics
      • Statistical Tests
      • Z - Test
      • Hypothesis Testing
    • SQL
      • SQL Tips
      • Creating new columns
  • ☘️Deep Learning
    • Backpropagation in Deep Learning
    • Pytorch Early Stopping
    • Optimizers
  • Pytorch Tensor Shapes
  • 🔖Machine Learning
    • Handling Imbalanced Dataset
    • Time Series Forecasting
      • Hierarchical Time Series Forecasting
      • Facebook Prophet
      • Misc
    • Handling high dimensionality data
      • Weight of evidence and Information value
    • Debugging ML Models
    • Feature Engineering
      • Time Series
      • Outlier Detection
      • Categorical Encoding
      • Feature Scaling
  • 🐲DSA
    • Arrays
  • 🖥️WEB DEV
    • Typescript
    • React State Management
    • Redux Boilerplate
    • Intercept a HTTP request or response
    • this keyword
    • Array Methods
    • Throttle Debounce
    • Media Queries
    • React Typeahead Search
  • Replace text with React Component
  • 💻Product Analytics
    • Product Sense
    • Customer Segmentation
  • 🖥️Terminal
    • Terminal Commands
    • Jupyter Notebook 2 HTML
  • 🪛Tools and Libraries
    • Web Based
    • Databases
  • 🚟Backend
    • Fast API CRUD
    • Scalable APIs
  • 💸Quant Finance
    • Misc
    • Factor Investing
  • 🎮Game Dev
    • Misc
  • 🛠️Architecture
    • Docker
    • AWS CDK
  • 🦠Artificial Intelligence
    • AI Engg
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. WEB DEV

Throttle Debounce

import { useEffect, useState } from "react";

const throttleFunction = (func, delay) => {
  let lastCall = 0;
  return function () {
    let currentTime = new Date().getTime();
    if (currentTime - lastCall > delay) {
      func();
      lastCall = currentTime;
    }
  };
};

export default function App() {
  const [text, setText] = useState("");
  const handleClick = throttleFunction(() => {
    console.log("clicked");
  }, 1000);

  useEffect(() => {
    let id = setTimeout(() => {
      console.log("Do api call " + text);
    }, 2000);
    return () => {
      clearTimeout(id);
    };
  }, [text]);

  const resizeListener = throttleFunction(() => {
    console.log("resize");
  }, 2000);

  useEffect(() => {
    window.addEventListener("resize", resizeListener);
    return () => {
      window.removeEventListener("resize", resizeListener);
    };
  }, []);

  return (
    <div className="App">
      <input onChange={(e) => setText(e.target.value)} />
      <div>{text}</div>
      <button onClick={handleClick}> Test Throttle </button>
    </div>
  );
}
PreviousArray MethodsNextMedia Queries

Last updated 1 year ago

Was this helpful?

🖥️