Skip to content

Commit 2249d95

Browse files
committed
ultimo conceptos
Finalizado el curso
1 parent d81f293 commit 2249d95

File tree

2 files changed

+179
-0
lines changed

2 files changed

+179
-0
lines changed

13-JavaScript-Asincrono/app.js

+166
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
//Funcionamiento de la función SetTimeOut
2+
3+
//Establecer un temporizador para ejecutar codigo
4+
//setTimeout(() => console.log('Esto aparece después de 3 segundos'), 3000);
5+
6+
7+
//JavaScript Asíncrono
8+
9+
/**
10+
* Sincrona => Todo se ejecuta de forma secuencial,es decir de arriba
11+
* para abajo.
12+
*
13+
* Asíncrono => Se puede ejecutar código en BackGround pero a la misma vez
14+
* puedes estar haciendo otras funcionalidades en tu programa.
15+
* */
16+
17+
//Se convierte en Asincrona porque el codigo se ejecuta de manera secuencial
18+
//y tras los dos segundos se ejecuta de manera automatica el settimeout
19+
/*const segundo = ()=> {
20+
setTimeout(() => {
21+
console.log('Llamada a segundo');
22+
23+
},2000);
24+
//console.log('Llamada a segundo');
25+
}
26+
27+
const primero = () => {
28+
console.log('Inicio de primero');
29+
segundo();
30+
console.log('Fin de primero');
31+
}
32+
primero();
33+
34+
//Simulación para la obtencion de datos de forma remota
35+
36+
const getUsuario = () =>{
37+
setTimeout(() => {
38+
const userIds = [101, 102, 103, 105];
39+
console.log(userIds);
40+
41+
setTimeout ((id)=>{
42+
const usuario = {
43+
email: 'lopes@gmail.com',
44+
nombre: 'Juan'
45+
}
46+
console.log(`${id} - ${usuario.email} - ${usuario.nombre}`);
47+
setTimeout((idPermiso)=>{
48+
const permiso = ['admin', 'creador'];
49+
console.log(permiso);
50+
}, 1500, userIds[2]);
51+
}, 1500, userIds[1]);
52+
}, 1500);
53+
}
54+
getUsuario();*/
55+
56+
//Las promesas nos permiten trabajar con las funciones asincronas de
57+
//forma mas eficiente y ordenada
58+
//objeto que representa el exito o el error de una operacion asincrona (promise)
59+
60+
//Ejemplo del uso de Promesas
61+
//Ejemplo 1
62+
let promesa = new Promise ((resolve, reject) => {
63+
if(true){ //para dar error cambiar a False
64+
resolve('La operación fue un éxito');
65+
} else {
66+
reject('Hubo un problema');
67+
}
68+
});
69+
70+
//controlamos el acierto y con el catch el error
71+
promesa.then( response => {
72+
console.log('Response: ' + response)
73+
}).catch( error =>{
74+
console.log('Error: ' + error);
75+
});
76+
77+
78+
79+
//Ejemplo 2
80+
var miPromesa = Promise.resolve('Comida');
81+
miPromesa.then(resp => console.log(resp));
82+
83+
84+
//Ejmplo 3
85+
var miPromesa2 = new Promise(function(resolve, reject){
86+
setTimeout (()=> resolve(4), 2000);
87+
})
88+
miPromesa2.then(resp => {
89+
resp += 5;
90+
console.log(resp);
91+
})
92+
93+
//De CallBacks a Promesas
94+
95+
const getUsuarioIds = new Promise((response, reject) => {
96+
setTimeout(() => {
97+
response([101, 102, 103, 105]);
98+
}, 1700)
99+
});
100+
101+
const getUsuario = userID => {
102+
return new Promise((resolve, reject) => {
103+
setTimeout(id => {
104+
const usuario = {
105+
106+
nombre: 'Juan'
107+
}
108+
resolve(`${id} - ${usuario.email} - ${usuario.nombre}`);
109+
}, 1500, userID)
110+
});
111+
}
112+
113+
const getPermisos = id => {
114+
return new Promise((resolve, reject) => {
115+
setTimeout(id => {
116+
const permiso = ['admin', 'creador'];
117+
resolve(permiso);
118+
}, 1500, id);
119+
});
120+
}
121+
getUsuarioIds
122+
.then(IDs =>{
123+
console.log(IDs);
124+
return getUsuario(IDs[3]);
125+
})
126+
.then(usuario =>{
127+
console.log(usuario);
128+
return getPermisos(usuario.id);
129+
})
130+
.then(permiso => {
131+
console.log(permiso);
132+
})
133+
.catch(()=>{
134+
console.log('Error');
135+
})
136+
137+
//Funcion con Async/Await
138+
139+
async function getUsuarioAW(){
140+
const IDs = await getUsuarioIds;
141+
console.log(IDs);
142+
const usuario = await getUsuario(IDs[3]);
143+
console.log(usuario);
144+
const permisos = await getPermisos(usuario.id)
145+
console.log(permisos);
146+
return usuario;
147+
}
148+
149+
//const usuario = getUsuarioAW();
150+
//getUsuarioAW().then(resultado => console.log(`${resultado} Es un usuario.`))
151+
//console.log(usuario);
152+
153+
//Ejemplo de una llamada AJAX con HTML Request
154+
155+
const request = new XMLHttpRequest();
156+
//Mostrar la información manejando eventos
157+
request.addEventListener('readystatechange', (e) =>{
158+
if(e.target.readyState === 4){
159+
const datos = JSON.parse(e.target.responseText);
160+
console.log(datos);
161+
}
162+
});
163+
request.open('GET', 'http://jsonplaceholder.typicode.com/users');
164+
request.send();
165+
166+

13-JavaScript-Asincrono/index.html

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
<title>JavasScript Asincrono</title>
8+
</head>
9+
<body>
10+
<h1>JavaScript Asíncrono</h1>
11+
<script src="app.js"></script>
12+
</body>
13+
</html>

0 commit comments

Comments
 (0)