Skip to content

Commit 4337080

Browse files
authored
Merge pull request #14 from maru33luc/main
Tp validaciones y asincronia - Marina Lucero
2 parents 96cea07 + 51655f4 commit 4337080

File tree

7 files changed

+426
-0
lines changed

7 files changed

+426
-0
lines changed
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// Ejercicio 1: Función Callback Básica
2+
// Escribe una función llamada `mostrarMensaje` que acepte un mensaje como argumento y una función de callback. La función `mostrarMensaje` debe mostrar el mensaje y luego llamar a la función de callback.
3+
4+
5+
function mostrarMensaje(mensaje, callback) {
6+
console.log(mensaje);
7+
callback();
8+
}
9+
10+
mostrarMensaje("Hola Mundo", function () {
11+
console.log("Este mensaje se muestra después del mensaje original");
12+
}
13+
);
14+
15+
// Ejercicio 2: Callback con Retorno de Datos
16+
// Crea una función llamada `sumarAsync` que acepte dos números y una función de callback. Esta función debe sumar los números y luego llamar a la función de callback con el resultado.
17+
18+
19+
function sumarAsync(num, num1, callback) {
20+
let suma = num + num1;
21+
callback(suma);
22+
}
23+
24+
function mostrarResultado(mensaje) {
25+
console.log(mensaje);
26+
}
27+
28+
sumarAsync(2, 3, mostrarResultado);
29+
30+
// Ejercicio 3: Uso de setTimeout
31+
// Escribe una función llamada `retrasarEjecucion` que acepte una función de callback y un número de milisegundos. La función debe llamar al callback después de la cantidad especificada de tiempo utilizando `setTimeout`.
32+
33+
34+
const retrasarEjecucion = (num, callback) => {
35+
setTimeout(callback, num);
36+
}
37+
38+
retrasarEjecucion(4000, () => console.log("Se ejecuto el callback"));
39+
40+
// Ejercicio 4: Callback Anidado
41+
// Crea una función llamada `obtenerDatosUsuario` que simule una solicitud HTTP para obtener datos de usuario. Esta función debe aceptar un ID de usuario y una función de callback. Luego, dentro de la función, debes simular una solicitud a una API y, cuando se complete, llamar a la función de callback con los datos del usuario.
42+
43+
const datosUsuario = [
44+
{
45+
id: 1,
46+
nombre: "Juan",
47+
edad: 33
48+
},
49+
{
50+
id: 2,
51+
nombre: "Maria",
52+
edad: 25
53+
},
54+
{
55+
id: 3,
56+
nombre: "Pedro",
57+
edad: 40
58+
},
59+
{
60+
id: 4,
61+
nombre: "Ana",
62+
edad: 20
63+
}
64+
]
65+
66+
const obtenerDatosUsuario = (id, callback) => {
67+
let usuario;
68+
setTimeout(function () {
69+
usuario = datosUsuario.find(elem => elem.id == id);
70+
if (usuario) callback(null, usuario);
71+
else callback("No se encontro un usuario con ese id");
72+
}, 5000)
73+
74+
}
75+
76+
let id = 3;
77+
78+
obtenerDatosUsuario(id, (err, usuario) => {
79+
if (err) console.log(err);
80+
else console.log(`El usuario con id ${id} se llama ${usuario.nombre}`);
81+
})
82+
83+
// Ejercicio 5: Promesas y Callbacks
84+
// Modifica el ejercicio 4 para que en lugar de utilizar callbacks, utilice promesas para manejar la solicitud de datos de usuario.
85+
86+
const obtenerDatosUsuario2 = (id)=>{
87+
88+
let usuario2 = datosUsuario.find(elem => elem.id == id);
89+
90+
return new Promise ((resolve, reject)=>{
91+
if (usuario2) resolve (usuario2.nombre);
92+
else reject("No existe el id");
93+
})
94+
}
95+
96+
obtenerDatosUsuario2(1).then(nombre=> console.log(nombre)).catch(error=>console.log(error));
97+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<link rel="stylesheet" href="style.css">
8+
<title>TP Callback</title>
9+
</head>
10+
<body>
11+
12+
<script src="codigo.js"></script>
13+
</body>
14+
</html>

Marina Lucero/TP - Callback/style.css

Whitespace-only changes.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<link rel="stylesheet" href="style.css">
8+
<title>Document</title>
9+
</head>
10+
<body>
11+
12+
<form action="" id="form">
13+
14+
<label for="nombre">Nombre</label>
15+
<input type="text" id="nombre" name="nombre" placeholder="Ingrese su nombre">
16+
<div id="nombreError" class="error"></div>
17+
18+
<label for="apellido">Apellido</label>
19+
<input type="text" id="apellido" name="apellido" placeholder="Ingrese su apellido">
20+
<div id="apellidoError" class="error"></div>
21+
22+
<label for="edad">Edad</label>
23+
<input type="number" id="edad" name="edad" placeholder="Ingrese su edad">
24+
<div id="edadError" class="error"></div>
25+
26+
<label for="email">Email</label>
27+
<input type="email" id="email" name="email" placeholder="Ingrese su email">
28+
<div id="emailError" class="error"></div>
29+
30+
<label for="password">Contraseña</label>
31+
<input type="password" id="password" name="password" placeholder="Ingrese su contraseña">
32+
<div id="passwordError" class="error"></div>
33+
34+
<button type="submit">Enviar</button>
35+
</form>
36+
37+
38+
<script src="promise.js"></script>
39+
<!-- <script src="tp2.js"></script> -->
40+
</body>
41+
</html>
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
// "use strict";
2+
3+
// Ejercicio 1: Crea una Promise que se resuelva después de 2 segundos y muestra un mensaje cuando se resuelva.
4+
5+
const promise = new Promise((resolve) => {
6+
setTimeout(() => {
7+
resolve('Se resuelve después de 3 segundos');
8+
}, 3000);
9+
});
10+
11+
promise.then((message) => {
12+
console.log(message);
13+
}).catch((message) => {
14+
console.log(message);
15+
});
16+
17+
18+
// Otra forma
19+
let nombre = "Juan";
20+
21+
22+
const promise1 = new Promise ((resolve, reject)=>{
23+
if (nombre=="Juan") resolve(nombre)
24+
else reject("Error en el nombre")
25+
});
26+
27+
promise1.then((nombre)=>console.log(nombre)).catch((err)=>console.log(err));
28+
29+
30+
// Misma forma con temporizador
31+
const promise2 = new Promise ((resolve, reject)=>{
32+
setTimeout(()=>{
33+
if (nombre=="Juan") resolve(nombre)
34+
else reject("Error en el nombre")
35+
},4000)
36+
});
37+
38+
promise2.then((nombre)=>console.log(nombre)).catch((err)=>console.log(err));
39+
40+
41+
// Ejercicio 2: Crea una función que acepte un número y devuelva una Promise que se resuelva con el doble del número después de 1 segundo.
42+
43+
44+
function aceptarNumero(numero){
45+
return new Promise ((resolve)=>setTimeout(()=>resolve(numero*2),2000))
46+
};
47+
48+
function aceptarNumero2 (numero){
49+
return new Promise ((resolve, reject)=>{
50+
if (typeof numero === "number") resolve(numero*2)
51+
else reject("Error en el tipo de dato")
52+
})
53+
};
54+
55+
aceptarNumero(2).then((num)=>console.log(num + " primera funcion"))
56+
.catch((err)=>console.log(err));
57+
58+
aceptarNumero2("sd").then((num)=>console.log(num)).catch((err)=>console.log(err));
59+
60+
// Ejercicio 3: Crea dos Promises que se resuelvan después de 3 segundos cada una. Combina ambas Promises para mostrar un mensaje cuando ambas se hayan resuelto. (Pista: usar Promise.all)
61+
62+
const prom1= new Promise ((resolve)=> setTimeout(()=>resolve ("Resuelta la prom1"),3000));
63+
64+
const prom2= new Promise ((resolve)=> setTimeout(()=>resolve ("Resuelta la prom2"),3000));
65+
66+
Promise.all([prom1,prom2]).then((msj)=>console.log(msj));
67+
68+
69+
70+
// Ejercicio 4: Crea una función que simule una solicitud HTTP asincrónica utilizando setTimeout y devuelva una Promise que se resuelva con un objeto JSON después de 2 segundos.
71+
72+
const objeto = {
73+
nombre: "Juan",
74+
apellido: "Lopez",
75+
edad: 33
76+
}
77+
78+
function obtenerJSON (){
79+
return new Promise((resolve)=> setTimeout(()=>resolve(objeto), 2000))
80+
}
81+
82+
obtenerJSON().then((nombre)=>console.log(nombre))
83+
84+
// Ejercicio 5: Crea una función que acepte un arreglo de números y devuelva una Promise que se
85+
// resuelva con la suma de los números después de 1 segundo. (Usar reduce)
86+
87+
let arreglo = [1,2,3,4,5];
88+
89+
function sumaArreglo (){
90+
return new Promise ((resolve)=>{
91+
setTimeout(()=> resolve(arreglo),1000);
92+
})
93+
}
94+
95+
sumaArreglo().then((msj)=>console.log(msj));
96+
97+
// Ejercicio 6: Crea una función asincrónica que haga una solicitud HTTP a una API de tu elección
98+
// utilizando la función fetch y devuelva el resultado en formato JSON. Maneja los errores
99+
// posibles.
100+
101+
102+
fetch("https://reqres.in/api/users/2")
103+
.then((res)=>res.json())
104+
.then((data)=>console.log(data))
105+
.catch((err)=>console.log(err));
106+
107+
// Ejercicio 7: Investigar una Api que se pueda paginar. Crea una función asincrónica que haga una serie de solicitudes HTTP secuenciales para obtener datos de una API paginada. Utiliza async/await para manejar la paginación hasta que todos los datos se hayan recuperado.
108+
109+
110+
async function obtenerPagina (...pagina){
111+
112+
for(let i=0; i<pagina.length; i++){
113+
let respuesta = await fetch(`https://reqres.in/api/users?page=${pagina[i]}`);
114+
let data = await respuesta.json();
115+
console.log(data);
116+
}
117+
118+
}
119+
120+
obtenerPagina(1,2);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
label, input{
3+
display: block;
4+
5+
}
6+
7+
label{
8+
margin-top: 15px;
9+
margin-bottom: 5px;
10+
color: aliceblue;
11+
}
12+
13+
button{
14+
margin-top: 15px;
15+
}
16+
17+
.error{
18+
display: none;
19+
}
20+
21+
body{
22+
background: linear-gradient(90deg, rgba(2,0,36,1) 0%, rgba(9,9,121,1) 35%, rgba(0,212,255,1) 100%);
23+
}

0 commit comments

Comments
 (0)