|
| 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 | + |
0 commit comments