Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda