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

143
Views
Alternativa a la variable global cuando se usa clearTimeout y setTimeout

EDITAR Usé el término incorrecto en el título y la pregunta. No quise decir una variable global, sino declarar timeoutID dentro de la función showNotification.

Estoy en mi primera semana de pruebas Redux. Me pregunto si hay una solución más elegante/menos hacky para usar una variable glodal para el timeoutID. clearTimeout se utiliza para garantizar que la última notificación agregada siempre se muestre durante todo el tiempo deseado, incluso si se agregara antes de que la notificación anterior se configurara como "vacía".

actionCreator.js

 import { addQuote } from "./addQuote" import { showNotification } from "./showNotification" export const actionCreator = (quote, time) => { return dispatch => { dispatch(addQuote(quote)) dispatch(showNotification(quote, time)) } }

showNotification.js

 let timeoutID = null export const showNotification = (newQuote, time) => { const message = `A new quote by ${newQuote.author} was added.` return dispatch => { dispatch({ type: 'SHOW_NOTIFICATION', data: message }) clearTimeout(timeoutID) timeoutID = setTimeout(() => { dispatch({ type: 'SHOW_NOTIFICATION', data: '' }) }, time * 1000) } }

notificaciónReductor.js

 const initState = { notification: '' } const notificationReducer = (state=initState, action) => { switch (action.type) { case 'SHOW_NOTIFICATION': const message = action.data return { ...state, notification: message } default: return { ...state } } } export default notificationReducer
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No es global, es un cierre , y ese es uno de los principios básicos en un mundo de módulos (¡que se inventó para evitar tener que usar el espacio de nombres global!).

Si fuera global, podría usar la variable en cualquier otro archivo JS sin importarlo explícitamente.

En actionCreator.js , que import { showNotification } from "./showNotification" , intente con console.log(timeoutID) y obtendrá undefined .

Los cierres no son realmente nada complicados; simplemente significa que cualquier función, cuando se declare, "recordará" cualquier variable local que se conociera ("dentro del alcance" es el término técnicamente más correcto para "conocido") en el punto de la declaración de la función, sin importar cuándo se llame a la función, o quien lo llama . Aquellas variables conocidas por una función a través de este mecanismo se llaman cierres .

No solo no hay nada de malo en programar de esta manera; además, es lo último en tecnología y, en contraste con otras soluciones mucho más detalladas y largas, como pasar parámetros, es la forma más elegante de resolver el problema.

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!