Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

71
Views
cierre antirrebote compartido por dos funciones

Estoy implementando la función de rebote. y pude escribir con éxito la función, entonces me vino a la mente un pensamiento confuso.

 function debounce(fn, timeout) { let timeoutRef; return function (...args) { const context = this; function cb() { fn.apply(context, args); } clearTimeout(timeoutRef); timeoutRef = setTimeout(cb, timeout); }; } function foo() { console.log('foo is called'); } function bar() { console.log('bar is called'); } const debouncedFoo = debounce(foo, 10000); const debouncedBar = debounce(bar, 2000); debouncedFoo(); debouncedBar();

en el código anterior, ¿ debouncedFoo y debouncedBar no comparten la misma variable colsure timeoutRef?

si ese es el caso cuando debouncedFoo() asigna la referencia de llamada setTimeout a la variable timeoutRef. Y más tarde, cuando se llame a debouncedBar(), se debe borrar la llamada anterior timeoutRef establecida por debouncedFoo() y se debe asignar una nueva referencia de llamada setTimeout.

En conclusión,

Resultado Esperado:

 bar is called

resultado actual:

 foo is called bar is called

¿Puede alguien por favor ayudarme a entender esto?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

en el código anterior, ¿debouncedFoo y debouncedBar no comparten la misma variable de cierre timeoutRef?

No, no comparten el mismo cierre. de hecho, los parámetros de función "fn" y "timeout" también están limitados en el alcance de cierre, lo que significa que hay un parámetro que está limitado en el alcance de cierre

  1. fn
  2. se acabó el tiempo
  3. tiempo de esperaRef

y debido a que está llamando a la función de rebote 2 veces, cada persona que llama tiene su propia pila local y cierre local. otra cosa que es importante es clearTimeout(timeoutRef); aquí el valor timeoutRef no está definido, por lo que no funcionará

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!