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

111
Views
Usando setInterval dentro de los cierres de javascript

Soy nuevo en javascript y estoy leyendo sobre cierres actualmente. Estaba tratando de implementar un ejemplo para comprender mejor el concepto.

Este es el fragmento:

 function getValue() { let a = 0 const runner = async () => { a += 1 } setInterval(runner, 100) return () => { return a } } let value = getValue() console.log(value()) -----> logging statement 1 // some long operation console.log(value()) -----> logging statement 2

Sin embargo, la salida que veo es:

 1 1

Esperaba que las dos declaraciones de registro generaran dos valores diferentes. Tengo entendido que una vez que se llama a getValue() , la runner de ejecución se ejecutaría a intervalos regulares. La variable a se actualizaría y, por lo tanto, el segundo console.log debería haber impreso un valor incrementado de a .

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

0

Estás casi allí, excepto que te perdiste la parte principal.

Las operaciones están ocurriendo demasiado rápido. No se necesitan 100 milisegundos para ejecutar la segunda iteración, por lo que el valor sigue siendo el mismo.

Intente esperar al menos 100 milisegundos ya que el intervalo que tiene necesita esa cantidad de tiempo para incrementarse.

Como se muestra en el siguiente ejemplo.

 function getValue() { let a = 0 const runner = async () => { a += 1 } setInterval(runner, 100) return () => { return a } } let value = getValue() console.log(value()) // operations are happening too fast setTimeout(() => console.log(value()), 100); setTimeout(() => console.log(value()), 200); setTimeout(() => console.log(value()), 300);

about 4 years ago · Juan Pablo Isaza Report

0

function getValue() { let a = 0 const runner = () => { a += 1 console.log("Runner's A: " +a) } setInterval(runner, 100) return () => { return a } } let value = getValue() console.log(value());// -----> logging statement 1 // some long operation console.log(value());// -----> logging statement 2

https://jsbin.com/geponejuba/edit?js,consola,salida

como se señaló anteriormente, js tiene un solo subproceso, por lo que la forma en que funciona es que sus declaraciones de registro se ejecutan primero y, si no hay nada más que hacer, se ejecutan setTimeout/setInterval (esta es una declaración extremadamente simplificada, puede leer sobre "Bucle de eventos" para una versión detallada)

en el ejemplo jsbin que compartí, puede ver que se llama a setInterval y, de hecho, está actualizando el valor.

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!