Promesas en JavaScript

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

¿Cuál es el propósito principal de una promesa en JavaScript?

  • Para declarar variables globales de manera más eficiente.
  • Para manejar operaciones asíncronas, representando su eventual finalización o fallo. (correct)
  • Para definir clases y objetos con métodos predefinidos.
  • Para ejecutar funciones síncronas en segundo plano.

El método .then() de una promesa se utiliza para manejar el caso donde la promesa se rechaza.

False (B)

¿Qué dos argumentos recibe la función 'executor' al construir una nueva promesa?

resolve y reject

En el encadenamiento de promesas, cada .then() recibe el resultado del .then() _________.

<p>anterior</p> Signup and view all the answers

¿Cuál es la utilidad del método .catch() en el manejo de promesas?

<p>Manejar cualquier error que ocurra en la cadena de promesas. (A)</p> Signup and view all the answers

Es posible utilizar bloques try...catch dentro de las funciones .then() para manejar errores específicos que puedan ocurrir durante el procesamiento?

<p>True (A)</p> Signup and view all the answers

Si un .then() retorna una promesa, ¿qué ocurre con el siguiente .then() en la cadena?

<p>espera a que la promesa se resuelva</p> Signup and view all the answers

Para indicar que una operación asíncrona dentro de una promesa se completó con éxito, se llama a la función _________.

<p>resolve</p> Signup and view all the answers

¿Qué ocurre si no se manejan los errores en las promesas?

<p>La aplicación puede fallar silenciosamente. (C)</p> Signup and view all the answers

Relacione cada método de la promesa con su función correcta:

<p>.then() = Maneja el resultado exitoso de la promesa. .catch() = Maneja el rechazo o error de la promesa. Promise constructor = Crea una nueva promesa.</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe mejor el propósito del 'event loop' en JavaScript?

<p>Manejar operaciones asíncronas permitiendo que el programa responda a eventos sin bloquear la interfaz de usuario. (C)</p> Signup and view all the answers

El método .catch() es la única forma de manejar errores en promesas y debe usarse dentro del constructor de la promesa.

<p>False (B)</p> Signup and view all the answers

¿Cómo se puede prevenir el 'callback hell' al trabajar con operaciones asíncronas en JavaScript?

<p>Utilizando promesas encadenadas con .then()</p> Signup and view all the answers

El método __________ de la API de promesas se utiliza para ejecutar código después de que una promesa se resuelva o se rechace, independientemente del resultado.

<p>.finally()</p> Signup and view all the answers

Asocia los siguientes métodos de la API de promesas con su descripción correcta:

<p>.then() = Agrega un callback que se ejecuta cuando la promesa se resuelve. .catch() = Agrega un callback que se ejecuta cuando la promesa se rechaza. Promise.all() = Retorna una promesa que se resuelve cuando todas las promesas del array se resuelven. Promise.race() = Retorna una promesa que se resuelve o rechaza tan pronto como una de las promesas del array se resuelve o rechaza.</p> Signup and view all the answers

¿Cuál es la principal diferencia entre callbacks y promesas en el manejo de la asincronía en JavaScript?

<p>Las promesas ofrecen una estructura más organizada y un mejor manejo de errores en comparación con los callbacks. (A)</p> Signup and view all the answers

Una vez que una promesa se resuelve o se rechaza, su estado puede cambiarse posteriormente.

<p>False (B)</p> Signup and view all the answers

¿Qué argumentos recibe la función que se pasa al constructor new Promise()?

<p><code>resolve</code> y <code>reject</code></p> Signup and view all the answers

Para crear una promesa que se resuelve inmediatamente con un valor dado, se utiliza el método __________.

<p>Promise.resolve(value)</p> Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor el comportamiento de Promise.race()?

<p>Resuelve la promesa resultante con el valor de la promesa que se resuelve más rápido. (C)</p> Signup and view all the answers

Flashcards

¿Qué son las promesas?

Objetos que representan la finalización exitosa o el fracaso de una operación asíncrona.

¿Qué es la función executor?

Función que se pasa como argumento al constructor Promise y que contiene la lógica de la operación asíncrona. Recibe resolve y reject como parámetros.

¿Qué hace .then()?

Método de una promesa que se ejecuta cuando la promesa se resuelve exitosamente.

¿Qué hace .catch()?

Método de una promesa que se ejecuta cuando la promesa es rechazada debido a un error.

Signup and view all the flashcards

¿Qué son las promesas encadenadas?

Permite ejecutar múltiples operaciones asíncronas en secuencia, donde cada .then() recibe el resultado del anterior.

Signup and view all the flashcards

¿Por qué es importante el manejo de errores?

Se utiliza para capturar errores que puedan ocurrir en cualquier parte de la cadena de promesas, evitando fallos silenciosos.

Signup and view all the flashcards

¿Cómo manejar errores en promesas?

Usar .catch() al final de la cadena o bloques try...catch dentro de .then() para manejar errores específicos.

Signup and view all the flashcards

¿Qué hace throw en un .then()?

Se utiliza dentro de un bloque .then() para pasar un error al bloque .catch() más cercano.

Signup and view all the flashcards

¿Qué es una promesa?

Un objeto que actúa como un contenedor para un valor que puede no estar disponible inmediatamente.

Signup and view all the flashcards

¿Encadenamiento de .then()?

Las promesas encadenables permiten expresar flujos de control asíncronos complejos de manera más legible.

Signup and view all the flashcards

¿Cómo tratar los errores en promesas?

Usar .catch() al final de la cadena o bloques try...catch dentro de .then() para manejar errores específicos y evitar fallos silenciosos.

Signup and view all the flashcards

¿Qué es .then()?

Método usado para manejar el resultado exitoso de una promesa.

Signup and view all the flashcards

¿Qué es .catch() en promesas?

Método para capturar y manejar errores o rechazos.

Signup and view all the flashcards

¿Qué hace throw dentro de un .then()?

Cuando se produce un error en un bloque .then(), throw pasa el error al .catch() más cercano aguas arriba.

Signup and view all the flashcards

¿Qué es la asincronía?

Permite a un programa ejecutar múltiples tareas simultáneamente sin bloquear el hilo principal.

Signup and view all the flashcards

¿Qué es el 'event loop'?

Es un modelo que permite al programa responder a eventos y completar tareas en segundo plano sin bloquear la interfaz de usuario.

Signup and view all the flashcards

¿Qué es .finally()?

Un método que siempre se ejecuta, independientemente de si la promesa se resuelve o se rechaza.

Signup and view all the flashcards

¿Qué hace Promise.all()?

Toma un array de promesas y retorna una promesa que se resuelve cuando todas las promesas del array se resuelven.

Signup and view all the flashcards

¿Qué es Promise.race()?

Toma un array de promesas y retorna una promesa que se resuelve o rechaza tan pronto como una de las promesas del array se resuelve o rechaza.

Signup and view all the flashcards

¿Qué es Promise.resolve(value)?

Crea una promesa que se resuelve inmediatamente con el valor dado.

Signup and view all the flashcards

¿Qué es Promise.reject(reason)?

Crea una promesa que se rechaza inmediatamente con la razón dada.

Signup and view all the flashcards

¿Qué son los callbacks?

Funciones que se pasan como argumentos a otras funciones y se ejecutan al completar una operación, pero pueden generar 'callback hell'.

Signup and view all the flashcards

Study Notes

  • En JavaScript, las promesas son objetos que representan la finalización (éxito) o el fracaso de una operación asíncrona.

Creación de Promesas

  • Una promesa se crea utilizando el constructor Promise, que acepta una función como argumento llamada "executor".
  • La función executor recibe dos argumentos: resolve y reject, que son funciones proporcionadas por JavaScript.
  • resolve se utiliza para indicar que la operación asíncrona se ha completado con éxito.
  • reject se utiliza para indicar que la operación asíncrona ha fallado.
  • Ejemplo básico:
const miPromesa = new Promise((resolve, reject) => {
  // Operación asíncrona (ejemplo: setTimeout)
  setTimeout(() => {
    const exito = true; // o false
    if (exito) {
      resolve("¡Éxito!"); // La promesa se cumple
    } else {
      reject("¡Error!");  // La promesa se rechaza
    }
  }, 1000);
});
  • Para crear una promesa, se utiliza el constructor new Promise(), que toma una función como argumento.
  • Esta función recibe dos argumentos: resolve y reject, que son a su vez funciones.
  • resolve se llama para indicar que la promesa se resolvió satisfactoriamente, pasando el valor resultante.
  • reject se llama para indicar que la promesa falló, pasando un objeto de error o una razón.
  • Dentro de la función del constructor, se realiza la operación asíncrona. Si tiene éxito, se llama a resolve; si falla, se llama a reject.
  • Una promesa puede estar en uno de tres estados: pendiente (pending), resuelta (fulfilled) o rechazada (rejected).
  • Una vez que una promesa se resuelve o se rechaza, su estado es inmutable.

Métodos .then() y .catch()

  • Las promesas tienen métodos .then() y .catch() para manejar el resultado de la operación asíncrona.
  • .then() se utiliza para manejar el caso donde la promesa se cumple (resolve).
  • .catch() se utiliza para manejar el caso donde la promesa se rechaza (reject).
  • Ejemplo:
miPromesa
.then((resultado) => {
    console.log("Resultado:", resultado); // Se ejecuta si la promesa se cumple
  })
  .catch((error) => {
    console.error("Error:", error);       // Se ejecuta si la promesa se rechaza
  });
  • .then() y .catch() siempre regresan una promesa, lo que permite encadenarlos.
  • .then(): Agrega un callback a ser ejecutado cuando la promesa se resuelve.
  • .catch(): Agrega un callback a ser ejecutado cuando la promesa se rechaza.

Promesas Encadenadas

  • El encadenamiento de promesas permite ejecutar una serie de operaciones asíncronas en secuencia.
  • Cada .then() recibe el resultado del .then() anterior (o el resultado de la promesa original si es el primero).
  • Si un .then() retorna una promesa, el siguiente .then() esperará a que esa promesa se resuelva antes de ejecutarse.
  • Ejemplo:
const obtenerDatos = () => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve("Datos obtenidos");
    }, 1000);
  });
};

const procesarDatos = (datos) => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(datos + " procesados");
    }, 1000);
  });
};

obtenerDatos()
  .then((datos) => {
    console.log("Datos:", datos);
    return procesarDatos(datos); // Retorna otra promesa
  })
  .then((datosProcesados) => {
    console.log("Datos Procesados:", datosProcesados);
  })
  .catch((error) => {
    console.error("Error:", error);
  });
  • En este ejemplo, obtenerDatos se ejecuta primero, luego procesarDatos con el resultado de obtenerDatos, y finalmente se muestra el resultado procesado.
  • Las promesas se pueden encadenar utilizando .then() para secuenciar operaciones asíncronas.
  • Cada .then() recibe el resultado de la promesa anterior y puede transformar o procesar ese resultado.
  • Si una función dentro de .then() retorna una nueva promesa, la cadena esperará a que esa promesa se resuelva antes de continuar.
  • Esto permite una secuencia de operaciones asíncronas más legible y manejable que los callbacks anidados.
  • El encadenamiento facilita la ejecución de tareas en un orden específico y el paso de resultados entre ellas.

Manejo de Errores

  • Es crucial manejar los errores en las promesas para evitar que la aplicación falle silenciosamente.
  • Se puede usar .catch() al final de la cadena de promesas para capturar cualquier error que ocurra en cualquier parte de la cadena.
  • También se pueden usar bloques try...catch dentro de las funciones .then() para manejar errores específicos que puedan ocurrir durante el procesamiento.
  • Ejemplo:
const promesaFallida = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject("Promesa fallida");
    }, 1000);
  });
};

promesaFallida()
  .then((resultado) => {
    console.log("Resultado:", resultado); // No se ejecuta
  })
  .catch((error) => {
    console.error("Error capturado:", error); // Se ejecuta
  });
  • También se puede utilizar throw dentro de un bloque then para pasar el error al bloque catch más cercano.
  • Ejemplo:
obtenerDatos()
  .then(datos => {
        if (!datos) {
            throw new Error("No se encontraron datos")
        }
        return procesarDatos(datos)
    })
  .then((datosProcesados) => {
    console.log("Datos Procesados:", datosProcesados);
  })
  .catch((error) => {
    console.error("Error:", error);
  });
  • El manejo de errores en promesas se realiza principalmente a través del método .catch().
  • Cualquier error que ocurra dentro de la promesa o en la cadena de promesas se propagará al .catch() más cercano.
  • Es fundamental incluir un bloque .catch() al final de la cadena para capturar cualquier error inesperado.
  • También se puede usar .finally() para ejecutar código después de que la promesa se resuelva o se rechace, independientemente del resultado.

Asincronía

  • La asincronía permite que un programa ejecute múltiples tareas concurrentemente sin bloquear el hilo principal.
  • En JavaScript, la asincronía es crucial para manejar operaciones que toman tiempo, como peticiones de red o acceso a la base de datos.
  • JavaScript utiliza un modelo de "event loop" para manejar operaciones asíncronas.
  • El "event loop" permite al programa responder a eventos y completar tareas en segundo plano sin congelar la interfaz de usuario.

Callbacks Versus Promesas

  • Los callbacks son funciones pasadas como argumentos a otras funciones y se ejecutan al completar una operación.
  • Las promesas ofrecen una alternativa más estructurada y legible a los callbacks, especialmente para manejar la asincronía.
  • Con los callbacks, las operaciones asíncronas anidadas pueden llevar al "callback hell", haciendo el código difícil de leer y mantener.
  • Las promesas evitan el "callback hell" al permitir encadenar operaciones de manera secuencial con .then().
  • Las promesas mejoran el manejo de errores mediante .catch(), mientras que los callbacks requieren manejo de errores individual para cada operación asíncrona.

API De Promesas

  • La API de promesas incluye métodos como .then(), .catch(), .finally(), Promise.all(), Promise.race(), Promise.resolve() y Promise.reject().
  • .finally(): Agrega un callback a ser ejecutado cuando la promesa se resuelve o rechaza, sin acceso al valor.
  • Promise.all(): Toma un array de promesas y retorna una nueva promesa que se resuelve cuando todas las promesas del array se resuelven.
  • Promise.race(): Toma un array de promesas y retorna una nueva promesa que se resuelve o rechaza tan pronto como una de las promesas del array se resuelve o rechaza.
  • Promise.resolve(value): Crea una promesa que se resuelve inmediatamente con el valor dado.
  • Promise.reject(reason): Crea una promesa que se rechaza inmediatamente con la razón dada.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

JavaScript Promises Quiz
3 questions
Promises in JavaScript Overview
45 questions

Promises in JavaScript Overview

FavoriteConstructivism6060 avatar
FavoriteConstructivism6060
JavaScript Promises and Async/Await
8 questions

JavaScript Promises and Async/Await

AppreciatedChrysoprase495 avatar
AppreciatedChrysoprase495
Use Quizgecko on...
Browser
Browser