Site Info Site Info

Ejecutar Funcion Solo Una Vez Javascript Desarrollo Geek

Ejecutar Funcion Solo Una Vez Javascript Desarrollo Geek

JavaScript es un lenguaje poderoso que nos permite crear sitios web interactivos. A veces, necesitamos ejecutar una función específica solo una vez, sin importar cuántas veces se llame. Hay varias formas de lograr esto en el desarrollo web.

Usando una variable de bandera (flag)

Una forma sencilla es utilizar una variable como "bandera" (flag). Esta variable nos indica si la función ya se ha ejecutado. Inicialmente, la bandera está en un estado (por ejemplo, 'false'). Dentro de la función, verificamos el estado de la bandera. Si es 'false', ejecutamos el código y cambiamos la bandera a 'true'. En llamadas posteriores, la verificación fallará y la función no se ejecutará de nuevo.

Veamos un ejemplo:


let funcionEjecutada = false;

function ejecutarUnaVez() {
  if (!funcionEjecutada) {
    console.log("¡Esta función se ejecuta solo una vez!");
    funcionEjecutada = true;
  } else {
    console.log("La función ya fue ejecutada.");
  }
}

ejecutarUnaVez(); // Imprime "¡Esta función se ejecuta solo una vez!"
ejecutarUnaVez(); // Imprime "La función ya fue ejecutada."
  

En este código, la variable funcionEjecutada actúa como la bandera. La primera vez que llamamos a ejecutarUnaVez(), la condición !funcionEjecutada es verdadera, por lo que el código dentro del if se ejecuta y funcionEjecutada se establece en true. Las llamadas posteriores no harán nada.

Usando la propiedad once de un evento

En algunos casos, podemos utilizar la propiedad once asociada a los eventos. Esta propiedad, cuando está presente, asegura que un evento se gestione una sola vez.

Introducción a las funciones de flecha de JavaScript | Estrada Web Group
Introducción a las funciones de flecha de JavaScript | Estrada Web Group

Consideremos este ejemplo que usa el DOM para adjuntar un listener:


const boton = document.getElementById('miBoton');

boton.addEventListener('click', function() {
  console.log('¡Click detectado!');
  boton.removeEventListener('click', arguments.callee); // Eliminar el listener después de la primera ejecución
});

Cada vez que se hace clic en el botón, el mensaje se imprimirá una vez. Para la segunda vez el listener se ha eliminado.

👀Funciones en Javascript 🐱‍👤
👀Funciones en Javascript 🐱‍👤

Una mejor forma de adjuntar el listener para ejecutarse una vez es usar el siguiente código:


const boton = document.getElementById('miBoton');

boton.addEventListener('click', () => {
  console.log('¡Click detectado!');
}, { once: true });

La opción { once: true } le dice al navegador que ejecute el listener solo una vez.

👀Funciones en Javascript 🐱‍👤. Las funciones son uno de los fragmentos
👀Funciones en Javascript 🐱‍👤. Las funciones son uno de los fragmentos

Usando clausuras (closures)

Las clausuras en JavaScript son una forma poderosa de mantener el estado privado. Podemos crear una función que devuelve otra función. La función interna "recuerda" las variables del ámbito externo, incluso después de que la función externa haya terminado de ejecutarse. Podemos usar esto para ejecutar una función solo una vez.

Aquí hay un ejemplo:

html - Ejecutar una funcion JavaScript principiantes - Stack Overflow
html - Ejecutar una funcion JavaScript principiantes - Stack Overflow

function crearFuncionUnica() {
  let ejecutado = false;

  return function() {
    if (!ejecutado) {
      console.log("¡Función ejecutada una sola vez!");
      ejecutado = true;
    } else {
      console.log("La función ya se ejecutó.");
    }
  };
}

const miFuncionUnica = crearFuncionUnica();

miFuncionUnica(); // Imprime "¡Función ejecutada una sola vez!"
miFuncionUnica(); // Imprime "La función ya se ejecutó."
  

En este caso, crearFuncionUnica() retorna una función. La variable ejecutado está dentro del ámbito de crearFuncionUnica(), pero la función interna puede acceder a ella. Esto nos permite mantener el estado de "ejecutado" de forma privada.

Aplicaciones prácticas

Ejecutar una función solo una vez tiene muchas aplicaciones. Por ejemplo, puede usarse para inicializar un componente, cargar datos una sola vez o mostrar un mensaje de bienvenida al usuario la primera vez que visita un sitio web. También puede ser útil al trabajar con APIs donde solo queremos hacer una llamada inicial.

La elección del método dependerá del contexto específico de tu código. El uso de una variable bandera es simple y fácil de entender. Las clausuras ofrecen una forma más encapsulada de mantener el estado. La propiedad once es especialmente útil para manejar eventos.

Gallery

Funciones en javaScript | Alura Cursos Online
JavaScript Ejercicio: 1283 Definir una Función para Obtener el Nombre
Curso Angular 01/01/2019 Curso JavaScript. - ppt descargar
Cómo crear eventos que se ejecuten una sola vez en JavaScript
Javascript Functions by Codificadas
La función Javascript dentro de Django Loop se ejecuta solo una vez - PeakU