隆Te damos la bienvenida a este reto!

1

隆Bienvenido al mundo de JavaScript!

D铆a 1

2

Variables, funciones y sintaxis b谩sica

3

Tipos de datos

4

Playground - Retorna el tipo

5

Tipos de datos - pt 2

D铆a 2

6

Operadores

7

Hoisting y coerci贸n

8

Playground - Calcula la propina

9

Alcance de las variables

D铆a 3

10

Condicionales

11

Playground - Calcula a帽os bisiestos

12

Switch

13

Playground - Obten informaci贸n de mascotas seg煤n su tipo

14

Ciclos

15

Playground - Dibuja un triangulo

D铆a 4

16

Arrays

17

Playground - Encuentra al michi mas famoso

18

Objetos

19

Playground - Obten el promedio de los estudiantes

D铆a 5 - Checkpoint

20

Playground - encuentra el palindromo m谩s grande

D铆a 6

21

Reasignaci贸n y redeclaraci贸n

22

Modo estricto

D铆a 7

23

Debugging y manejo de errores

24

Programaci贸n funcional

Quiz: D铆a 7

D铆a 8

25

Closures

26

Playground - Crea una calculadora con closures

27

Higher order functions

28

Playground - Crea tu propio m茅todo map

D铆a 9

29

ECMAScript

30

TC39

Quiz: D铆a 9

D铆a 10 - Checkpoint

31

ES6

32

ES7

33

Playground - Task planner

D铆a 11

34

Asincronismo

35

Playground - Promesas

36

Manejando el asincronismo

37

Playground - Resuelve el callback hell usando promesas

38

Playground - Resuelve el callback hell usando async/await

D铆a 12

39

Arrays a profundidad

40

M茅todos de arrays: Every, Find y findIndex

41

Playground - V谩lida el formulario

D铆a 13

42

M茅todos de arrays: Includes, Join y concat

43

Playground - agrupa los productos

44

M茅todos de arrays: Flat y FlatMap

45

Playground - Encuentra la ubicaci贸n del valor buscado

D铆a 14

46

Mutable functions

47

Playground - Modifica una lista de compras

48

M茅todos de arrays: sort

49

Playground - Ordena los productos

D铆a 15 - Checkpoint

50

Playground - Sistema de reservaciones de un hotel

D铆a 16

51

Programaci贸n orientada a objetos en JavaScript

52

Objetos literales

53

Playground - Congela el objeto recursivamente

D铆a 17

54

Prototipos en JavaScript

55

Playground - Modifica el prototype de los arrays

56

Playground - Crea un auto usando clases

D铆a 18

57

Abstracci贸n en JavaScript

58

Playground - Sistema de carrito de compras

59

Encapsulamiento en JavaScript

60

Playground - Encapsula datos de los usuarios

D铆a 19

61

Herencia en JavaScript

62

Playground - Jerarqu铆a de animales

63

Polimorfismo en JavaScript

64

Playground - Sistema de pagos

D铆a 20 - Checkpoint

65

Playground - Agenda de vuelos

D铆a 21

66

Patrones de dise帽o

67

Sinlgeton y Factory pattern en JavaScript

68

Playground - Implementa singleton en un chat

D铆a 22

69

Adapter y Decorator pattern en JavaScript

70

Playground - Personaliza productos de una tienda

71

Builder y Protype pattern en JavaScript

72

Playground - Mejora el c贸digo usando builder pattern

D铆a 23

73

Facade y proxy pattern en JavaScript

74

Playground - Proxy en servicio de mensajer铆a

75

Chain of responsability y Observer pattern en JavaScript

76

Playground - Implementaci贸n de Observador en Newsletter

D铆a 24 - Checkpoint

77

Playground - Crea un task manager con patrones de dise帽o

D铆a 25

78

Estructuras de datos en JavaScript

79

Playground - Crea tu propia implementaci贸n de un array

80

Hash tables en JavaScript

81

Playground - Implementaci贸n de una HashTable para Contactos

D铆a 26

82

Set en JavaScript

83

Playground - Remueve duplicados de una lista

84

Maps en JavaScript

85

Playground - Crea un organizador de tareas

D铆a 27

86

Singly Linked List en JavaScript

87

Playground - Agrega m茅todos a la singly linked list

88

Playground - Implementaci贸n de una singly linked list

D铆a 28

89

Stacks en JavaScript

90

Playground - Crea un stack para una playlist

D铆a 29

91

Queues en JavaScript

92

Playground - Crea una cola de emails

D铆a 30

93

隆Lo lograste!

Live Class

94

30 d铆as de JS con Juan DC

95

30 d铆as de JS con Nicobytes

96

30 d铆as de JS con GNDX

97

30 d铆as de JS con LeoCode

98

30 d铆as de JS con Teffcode

99

Sesi贸n: Cierre de los 30 d铆as de JavaScript

Manejando el asincronismo

36/99

Lectura

Las promesas son una caracter铆stica importante de JavaScript para manejar operaciones as铆ncronas y controlar su flujo. Pero, 驴c贸mo se manejan las promesas en el c贸digo de forma eficiente y efectiva? Vamos a discutir dos formas populares de manejar promesas: mediante callbacks y mediante async/await.

...

Reg铆strate o inicia sesi贸n para leer el resto del contenido.

Aportes 5

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

callback, promesas y async/await:


.
Un callback es una funci贸n que se pasa como argumento a otra funci贸n y se invoca despu茅s de que se complete una tarea as铆ncrona. Por ejemplo, imagina que tienes una funci贸n que obtiene datos de un servidor y quieres imprimir los datos en la consola cuando se complete la solicitud.

function getData(callback) {
  // Hacer la solicitud al servidor
  // ...
  // Cuando se complete la solicitud:
  callback(data);
}

getData(function(data) {
  console.log(data);
});

Las promesas son un m茅todo m谩s nuevo para manejar el asincronismo en JavaScript. Una promesa representa un valor que puede estar disponible ahora, en el futuro o nunca. Las promesas tienen tres estados posibles: pendiente, resuelta y rechazada. Puedes encadenar promesas juntas para manejar m煤ltiples tareas asincr贸nicas en secuencia.

function getData() {
  return new Promise((resolve, reject) => {
    // Hacer la solicitud al servidor
    // ...
    // Cuando se complete la solicitud:
    if (data) {
      resolve(data);
    } else {
      reject("No se pudo obtener los datos");
    }
  });
}

getData()
  .then((data) => {
    console.log(data);
  })
  .catch((error) => {
    console.error(error);
  });

Finalmente, async/await es una forma m谩s f谩cil y legible de manejar el asincronismo en JavaScript. Puedes usar la palabra clave async para declarar una funci贸n as铆ncrona y la palabra clave await para esperar a que se complete una tarea antes de continuar con la siguiente. Esto hace que el c贸digo sea m谩s f谩cil de leer y entender.

async function imprimirDespuesDeUnSegundo() {
  await new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve();
    }, 1000);
  });
  
  console.log("Hola"); // imprime "Hola" despu茅s de 1 segundo
}

imprimirDespuesDeUnSegundo();

Los cursos sugeridos y el reto, son un complemento perfecto para un excelente aprendizaje de este lenguaje, siento que estoy aprendiendo un mont贸n y lo mejor de manera agradable y sin tanto dolor, (aunque cabe resaltar que me dan duro los playground) .
Gracias Luis por todos tus aportes cada clase los leo y gracias Platzi por este tipo de retos y ojala que vengan m谩s retos como este 馃榿馃榿馃榿馃榿馃榿馃榿馃槉

36/89 Manejando el asincronismo
Las promesas en JavaScript para manejar operaciones as铆ncronas y controlar su flujo a trav茅s de callbacks y async/await.

Callbacks

Los callbacks son una forma de manejar la respuesta de una promesa en JavaScript. Se utilizan como argumentos de una funci贸n y se llaman en un alg煤n momento despu茅s de que se complete la operaci贸n as铆ncrona. Sin embargo, anidar m煤tiple callbacks puede crear un Callback Hell, lo que dificulta la comprensi贸n, el mantenimiento y la depuraci贸n del c贸digo.

operation1(function(result1) {
  operation2(result1, function(result2) {
    operation3(result2, function(result3) {
      operation4(result3, function(result4) {
        // ...continuar con m谩s operaciones
      });
    });
  });
});

En este ejemplo se muestra c贸mo se utiliza un callback para mostrar los datos del usuario obtenidos de una API. La funci贸n getUserData toma un ID de usuario y una funci贸n de callback, y llama al callback con los datos del usuario como argumento una vez que se obtiene de la API. La funci贸n displayUserData es el callback que simplemente muestra el nombre del usuario en la consola.

Es importante tener en cuenta que, aunque los callbacks son una forma 煤til de manejar promesas en JavaScript, su uso excesivo puede hacer que el c贸digo sea dificil de leer y mantener. Por lo tanto, existen otras alternativas como async/await que se discuten en el texto original.

Promesas

Una forma de evitar el Callback Hell es utilizando Promesas o Async/Await en lugar de callbacks. Las promesas proporcionan una forma m谩s estructurada y f谩cil de leer para manejar c贸digo as铆ncrono.

operation1()
  .then(result1 => {
    return operation2(result1);
  })
  .then(result2 => {
    return operation3(result2);
  })
  .then(result3 => {
    return operation4(result3);
  })
  .then(result4 => {
    // ...continuar con m谩s operaciones
  })
  .catch(error => {
    // Manejar errores
  });

En el ejemplo proporcionado, se muestra c贸mo se puede reescribir el c贸digo anterior utilizando promesas. Cada operaci贸n devuelve una promesa que se encadena usando el m茅todo then(), lo que hcae que el c贸digo sea m谩s legible y f谩cil de seguir en comparaci贸n con la versi贸n anterior que usaba callbacks.

Async/Await

Es una t茅cnica moderna para manejar promesas en JavaScript que hace que el c贸digo sea m谩s f谩cil de leer y seguir en comparaci贸n con callbacks y promesas. En lugar de anidar varias funciones dentro de otras, el c贸digo utiliza palabras clave como async y await para indicar qu茅 opereaciones son as铆ncronas y esperar hasta que se resuelvan

En el ejemplo proporcionado, la funci贸n getUserData usa la API fetch para obtener los datos del usuario y devuelve los datos como resultado. La funci贸n displayUserData llama getUserData y espera a que se resuelva la promesa antes de mostrar el nombre del usuario en la consola. La palabra clave try/catch es utilizada para manejar cualquier error que se produzca durante la ejecuci贸n de las funciones async/await

async function getUserData(userId) {
  try {
    const response = await fetch(`https://jsonplaceholder.typicode.com/users/${userId}`);
    const data = await response.json();
    return data;
  } catch (error) {
    console.log(error);
  }
}

async function displayUserData(userId) {
  const data = await getUserData(userId);
  console.log(data.name);
}

displayUserData(1);

La funci贸n async/await getUserData se puede usar para buscar y devolver los detalles del usuario de una base de daatos remota. La funci贸n se puede llamar en otra funci贸n async/await para mostrar los detalles del usuario en una interfaz de usuario en l铆nea.

El ejemplo de Async/Await me pareci贸 muy claro para entender la l贸gica de ejecuci贸n. 10/10 馃