Upload via hfc (batch)
Browse filesUploaded using hfc tool
This view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +13 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Peticiones asíncronas con for await en JavaScript.vtt +296 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-app_e835cf0c-719c-47e7-a782-0ca063e8d59b.js +34 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Fundamentos de HTTP ClienteServidor y Métodos de Petición.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Fundamentos de HTTP ClienteServidor y Métodos de Petición.vtt +141 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Peticiones HTTP en Frontend Uso de Fetch y Análisis en Network.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Peticiones HTTP en Frontend Uso de Fetch y Análisis en Network.vtt +811 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-app_954bf774-9dc6-4b66-b9bb-9935d30de91d.js +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Peticiones HTTP en JavaScript Fetch GET POST y DELETE.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Peticiones HTTP en JavaScript Fetch GET POST y DELETE.vtt +631 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-app_3019584a-adf8-4ac8-80e4-de2a4c7532bc.js +49 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Envío de Datos al Servidor con JavaScript y Fetch API.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Envío de Datos al Servidor con JavaScript y Fetch API.vtt +696 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-app_6a7338a5-f4d8-42bf-8732-2ca120df4082.js +68 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Eliminar Posts con JavaScript y Delegación de Eventos.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Eliminar Posts con JavaScript y Delegación de Eventos.vtt +745 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-app_cd059276-f2dc-4bdc-a54b-22bc7be4a576.js +80 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Manejo de IDs en JavaScript para eliminar artículos del DOM.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Manejo de IDs en JavaScript para eliminar artículos del DOM.vtt +194 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Actualizaciones y Nuevas Funciones en JavaScript.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Actualizaciones y Nuevas Funciones en JavaScript.vtt +171 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Resumen.html +0 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Lecturas recomendadas.txt +1 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Manejo de Memoria y Punteros en C.mp4 +3 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Manejo de Memoria y Punteros en C.vtt +385 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Resumen.html +0 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-slides-del-curso-de-poo-con-c_f444e705-c951-4d68-b9c0-907667481c77.pdf +3 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Punteros en C Manejo y Uso de Memoria Dinámica.mp4 +3 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Punteros en C Manejo y Uso de Memoria Dinámica.vtt +292 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Resumen.html +0 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Resumen.html +0 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Uso de Punteros en C Variables y Memoria Dinámica.mp4 +3 -0
- subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Uso de Punteros en C Variables y Memoria Dinámica.vtt +325 -0
- subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Estructuras de Datos Personalizadas en C.mp4 +3 -0
- subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Estructuras de Datos Personalizadas en C.vtt +331 -0
- subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Resumen.html +0 -0
- subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/02-Creación y uso de estructuras y punteros en C.mp4 +3 -0
.gitattributes
CHANGED
|
@@ -227,3 +227,16 @@ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript
|
|
| 227 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/02-Promesas[[:space:]]en[[:space:]]JavaScript[[:space:]]Asincronía[[:space:]]y[[:space:]]Manejo[[:space:]]de[[:space:]]Estados.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 228 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/03-Uso[[:space:]]de[[:space:]]AsyncAwait[[:space:]]para[[:space:]]Promesas[[:space:]]Asíncronas[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 229 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/04-Peticiones[[:space:]]asíncronas[[:space:]]con[[:space:]]for[[:space:]]await[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 227 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/02-Promesas[[:space:]]en[[:space:]]JavaScript[[:space:]]Asincronía[[:space:]]y[[:space:]]Manejo[[:space:]]de[[:space:]]Estados.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 228 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/03-Uso[[:space:]]de[[:space:]]AsyncAwait[[:space:]]para[[:space:]]Promesas[[:space:]]Asíncronas[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 229 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/04-Peticiones[[:space:]]asíncronas[[:space:]]con[[:space:]]for[[:space:]]await[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 230 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/05-Fundamentos[[:space:]]de[[:space:]]HTTP[[:space:]]ClienteServidor[[:space:]]y[[:space:]]Métodos[[:space:]]de[[:space:]]Petición.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 231 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/06-Peticiones[[:space:]]HTTP[[:space:]]en[[:space:]]Frontend[[:space:]]Uso[[:space:]]de[[:space:]]Fetch[[:space:]]y[[:space:]]Análisis[[:space:]]en[[:space:]]Network.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 232 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/07-Peticiones[[:space:]]HTTP[[:space:]]en[[:space:]]JavaScript[[:space:]]Fetch[[:space:]]GET[[:space:]]POST[[:space:]]y[[:space:]]DELETE.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 233 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/08-Envío[[:space:]]de[[:space:]]Datos[[:space:]]al[[:space:]]Servidor[[:space:]]con[[:space:]]JavaScript[[:space:]]y[[:space:]]Fetch[[:space:]]API.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 234 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/09-Eliminar[[:space:]]Posts[[:space:]]con[[:space:]]JavaScript[[:space:]]y[[:space:]]Delegación[[:space:]]de[[:space:]]Eventos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 235 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/10-Manejo[[:space:]]de[[:space:]]IDs[[:space:]]en[[:space:]]JavaScript[[:space:]]para[[:space:]]eliminar[[:space:]]artículos[[:space:]]del[[:space:]]DOM.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 236 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincronía[[:space:]]en[[:space:]]JavaScript/11-Actualizaciones[[:space:]]y[[:space:]]Nuevas[[:space:]]Funciones[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 237 |
+
subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]dinámica/01-Manejo[[:space:]]de[[:space:]]Memoria[[:space:]]y[[:space:]]Punteros[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 238 |
+
subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]dinámica/01-slides-del-curso-de-poo-con-c_f444e705-c951-4d68-b9c0-907667481c77.pdf filter=lfs diff=lfs merge=lfs -text
|
| 239 |
+
subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]dinámica/02-Punteros[[:space:]]en[[:space:]]C[[:space:]]Manejo[[:space:]]y[[:space:]]Uso[[:space:]]de[[:space:]]Memoria[[:space:]]Dinámica.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 240 |
+
subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]dinámica/03-Uso[[:space:]]de[[:space:]]Punteros[[:space:]]en[[:space:]]C[[:space:]]Variables[[:space:]]y[[:space:]]Memoria[[:space:]]Dinámica.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 241 |
+
subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/01-Estructuras[[:space:]]de[[:space:]]Datos[[:space:]]Personalizadas[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 242 |
+
subir/Curso[[:space:]]de[[:space:]]Programación[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/02-Creación[[:space:]]y[[:space:]]uso[[:space:]]de[[:space:]]estructuras[[:space:]]y[[:space:]]punteros[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Peticiones asíncronas con for await en JavaScript.vtt
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:05.120
|
| 4 |
+
¿Qué pasaría si, por ejemplo, tuvieras que
|
| 5 |
+
hacer más de una petición?
|
| 6 |
+
|
| 7 |
+
00:05.120 --> 00:11.040
|
| 8 |
+
¿Cuál sería la mejor forma de hacerlo
|
| 9 |
+
utilizando una promesa como async and await?
|
| 10 |
+
|
| 11 |
+
00:11.040 --> 00:14.360
|
| 12 |
+
Esto es importante porque cuando estés
|
| 13 |
+
trabajando en algún proyecto
|
| 14 |
+
|
| 15 |
+
00:14.360 --> 00:18.800
|
| 16 |
+
y de repente tengas una pantalla que va a
|
| 17 |
+
requerir más de una petición,
|
| 18 |
+
|
| 19 |
+
00:18.800 --> 00:22.600
|
| 20 |
+
¿cómo lo estarás haciendo en una
|
| 21 |
+
promesa?
|
| 22 |
+
|
| 23 |
+
00:22.600 --> 00:27.400
|
| 24 |
+
Entonces, la forma de hacerlo es algo que
|
| 25 |
+
se llama un for await off,
|
| 26 |
+
|
| 27 |
+
00:27.400 --> 00:33.560
|
| 28 |
+
que es un bucle que va a utilizar un async
|
| 29 |
+
and await para poder pasar esas peticiones.
|
| 30 |
+
|
| 31 |
+
00:33.560 --> 00:39.480
|
| 32 |
+
Las peticiones las puedes traer en algún
|
| 33 |
+
array de forma asíncrona
|
| 34 |
+
|
| 35 |
+
00:39.480 --> 00:42.880
|
| 36 |
+
para que una vez que las peticiones se
|
| 37 |
+
terminen de resolver,
|
| 38 |
+
|
| 39 |
+
00:42.880 --> 00:47.400
|
| 40 |
+
entonces regresen al call stack y tú
|
| 41 |
+
tengas respuesta de esos datos.
|
| 42 |
+
|
| 43 |
+
00:47.400 --> 00:51.720
|
| 44 |
+
La forma de hacerlo sería, de primera
|
| 45 |
+
instancia, vamos a construir
|
| 46 |
+
|
| 47 |
+
00:51.720 --> 01:02.760
|
| 48 |
+
nuestro array que van a ser como un
|
| 49 |
+
arreglo de diferentes URLs.
|
| 50 |
+
|
| 51 |
+
01:02.760 --> 01:06.800
|
| 52 |
+
Y vamos a regresar aquí a nuestra API de
|
| 53 |
+
Rick and Morty
|
| 54 |
+
|
| 55 |
+
01:06.800 --> 01:13.680
|
| 56 |
+
y vamos a tomar estas
|
| 57 |
+
URLs.
|
| 58 |
+
|
| 59 |
+
01:13.680 --> 01:16.920
|
| 60 |
+
Vamos a utilizar las tres que tenemos aquí,
|
| 61 |
+
|
| 62 |
+
01:16.920 --> 01:22.360
|
| 63 |
+
solo como
|
| 64 |
+
referencia,
|
| 65 |
+
|
| 66 |
+
01:22.360 --> 01:27.160
|
| 67 |
+
y vamos a hacer esas tres peticiones.
|
| 68 |
+
|
| 69 |
+
01:27.160 --> 01:30.160
|
| 70 |
+
Perfecto.
|
| 71 |
+
|
| 72 |
+
01:30.160 --> 01:37.600
|
| 73 |
+
Y vamos a poner la
|
| 74 |
+
última.
|
| 75 |
+
|
| 76 |
+
01:37.600 --> 01:39.440
|
| 77 |
+
Muy
|
| 78 |
+
bien.
|
| 79 |
+
|
| 80 |
+
01:39.440 --> 01:42.800
|
| 81 |
+
Ya tenemos aquí nuestro arreglo de tres
|
| 82 |
+
URLs
|
| 83 |
+
|
| 84 |
+
01:42.800 --> 01:46.960
|
| 85 |
+
a las cuales tenemos que hacer la petición
|
| 86 |
+
a cada una de estas tres.
|
| 87 |
+
|
| 88 |
+
01:46.960 --> 01:54.040
|
| 89 |
+
Aquí vamos a generar otra función que va a
|
| 90 |
+
ser una función async,
|
| 91 |
+
|
| 92 |
+
01:54.040 --> 02:01.960
|
| 93 |
+
que se va a llamar fetch new
|
| 94 |
+
data.
|
| 95 |
+
|
| 96 |
+
02:01.960 --> 02:04.840
|
| 97 |
+
No va a recibir ningún parámetro de momento.
|
| 98 |
+
|
| 99 |
+
02:04.840 --> 02:07.960
|
| 100 |
+
Y aquí vamos a empezar con nuestro try.
|
| 101 |
+
|
| 102 |
+
02:07.960 --> 02:13.760
|
| 103 |
+
Y en nuestro try, como nosotros queremos
|
| 104 |
+
es iterar, hacer un loop sobre este arreglo
|
| 105 |
+
|
| 106 |
+
02:13.760 --> 02:19.160
|
| 107 |
+
para tener cada una de estas tres APIs y
|
| 108 |
+
poder hacer un fetch de estas APIs,
|
| 109 |
+
|
| 110 |
+
02:19.160 --> 02:28.200
|
| 111 |
+
entonces lo que vamos a hacer es empezamos
|
| 112 |
+
con el for await
|
| 113 |
+
|
| 114 |
+
02:28.200 --> 02:32.040
|
| 115 |
+
y la sintaxis es, generamos nuestra variable,
|
| 116 |
+
|
| 117 |
+
02:32.040 --> 02:40.800
|
| 118 |
+
let URL of
|
| 119 |
+
URLs.
|
| 120 |
+
|
| 121 |
+
02:40.800 --> 02:42.920
|
| 122 |
+
La sintaxis creo que es muy straightforward,
|
| 123 |
+
|
| 124 |
+
02:42.920 --> 02:50.280
|
| 125 |
+
entonces por cada URL que exista en URLs,
|
| 126 |
+
haz lo siguiente.
|
| 127 |
+
|
| 128 |
+
02:50.280 --> 02:57.640
|
| 129 |
+
Y de aquí lo siguiente, lo que vamos a
|
| 130 |
+
estar haciendo es,
|
| 131 |
+
|
| 132 |
+
02:57.640 --> 03:07.720
|
| 133 |
+
let response igual a await fetch URL,
|
| 134 |
+
|
| 135 |
+
03:07.720 --> 03:13.960
|
| 136 |
+
porque esto nos va a traer entonces una
|
| 137 |
+
URL de este arreglo.
|
| 138 |
+
|
| 139 |
+
03:13.960 --> 03:18.360
|
| 140 |
+
Perfecto.
|
| 141 |
+
|
| 142 |
+
03:18.360 --> 03:30.600
|
| 143 |
+
Después entonces on let data igual a await
|
| 144 |
+
response.json
|
| 145 |
+
|
| 146 |
+
03:30.600 --> 03:39.320
|
| 147 |
+
y si lo tenemos, pues quiero que nada más
|
| 148 |
+
de momento me imprima ese dato.
|
| 149 |
+
|
| 150 |
+
03:39.320 --> 03:45.720
|
| 151 |
+
Entonces ya que está aquí, tengo un problema,
|
| 152 |
+
ya está.
|
| 153 |
+
|
| 154 |
+
03:45.720 --> 03:52.600
|
| 155 |
+
Es el for await, entonces tenemos un por
|
| 156 |
+
cada URL en el arreglo de URLs,
|
| 157 |
+
|
| 158 |
+
03:52.600 --> 03:57.480
|
| 159 |
+
empezamos aquí nuestra sintaxis, entonces
|
| 160 |
+
tenemos la respuesta
|
| 161 |
+
|
| 162 |
+
03:57.480 --> 04:02.680
|
| 163 |
+
que se guarda en cada uno de los fetch que
|
| 164 |
+
se va a hacer a cada una de las URLs,
|
| 165 |
+
|
| 166 |
+
04:02.680 --> 04:09.240
|
| 167 |
+
esta respuesta la vamos a convertir en
|
| 168 |
+
JSON y entonces lo vamos a guardar en datos
|
| 169 |
+
|
| 170 |
+
04:09.240 --> 04:11.560
|
| 171 |
+
y vamos a imprimir
|
| 172 |
+
datos.
|
| 173 |
+
|
| 174 |
+
04:11.560 --> 04:17.000
|
| 175 |
+
Si eso sale bien, entonces vamos a tener
|
| 176 |
+
que ver como tres impresiones
|
| 177 |
+
|
| 178 |
+
04:17.000 --> 04:19.480
|
| 179 |
+
de cada una de los llamados que se hicieron.
|
| 180 |
+
|
| 181 |
+
04:19.480 --> 04:27.080
|
| 182 |
+
Ahora, si esto falla, pues de momento
|
| 183 |
+
quiero que me traigas el error
|
| 184 |
+
|
| 185 |
+
04:27.080 --> 04:32.760
|
| 186 |
+
y esto lo vamos a
|
| 187 |
+
imprimir.
|
| 188 |
+
|
| 189 |
+
04:32.760 --> 04:35.320
|
| 190 |
+
Error.
|
| 191 |
+
|
| 192 |
+
04:35.320 --> 04:36.440
|
| 193 |
+
Perfecto.
|
| 194 |
+
|
| 195 |
+
04:36.440 --> 04:40.040
|
| 196 |
+
Entonces aquí
|
| 197 |
+
guardamos.
|
| 198 |
+
|
| 199 |
+
04:40.040 --> 04:45.960
|
| 200 |
+
Aquí nada más recordemos que el catch
|
| 201 |
+
tiene que ir afuera del try,
|
| 202 |
+
|
| 203 |
+
04:45.960 --> 04:49.960
|
| 204 |
+
aquí está, aquí termina nuestro try,
|
| 205 |
+
entonces aquí empieza el catch,
|
| 206 |
+
|
| 207 |
+
04:49.960 --> 04:53.320
|
| 208 |
+
perfecto, termina aquí el catch y aquí
|
| 209 |
+
termina nuestra función.
|
| 210 |
+
|
| 211 |
+
04:53.320 --> 04:57.480
|
| 212 |
+
Entonces podemos guardar, venimos a
|
| 213 |
+
nuestro promise
|
| 214 |
+
|
| 215 |
+
04:57.480 --> 05:01.000
|
| 216 |
+
y ya que estamos aquí, vamos a mandar
|
| 217 |
+
llamar nuestra función.
|
| 218 |
+
|
| 219 |
+
05:01.000 --> 05:06.600
|
| 220 |
+
Fetch new
|
| 221 |
+
data.
|
| 222 |
+
|
| 223 |
+
05:06.600 --> 05:09.720
|
| 224 |
+
Y perfecto, podemos ver como es una promesa,
|
| 225 |
+
|
| 226 |
+
05:09.720 --> 05:16.200
|
| 227 |
+
está como lista, perfecto, y tenemos cada
|
| 228 |
+
una de las tres llamadas.
|
| 229 |
+
|
| 230 |
+
05:16.200 --> 05:19.800
|
| 231 |
+
Abrimos, vemos los resultados, tenemos
|
| 232 |
+
aquí los personajes,
|
| 233 |
+
|
| 234 |
+
05:19.800 --> 05:24.200
|
| 235 |
+
la primera llamada fue para personajes,
|
| 236 |
+
cerramos, abrimos,
|
| 237 |
+
|
| 238 |
+
05:24.200 --> 05:27.560
|
| 239 |
+
nuevo resultado, la segunda llamada fue
|
| 240 |
+
para locaciones
|
| 241 |
+
|
| 242 |
+
05:27.560 --> 05:31.560
|
| 243 |
+
y tenemos aquí tierra y tenemos como lo
|
| 244 |
+
que suele ser como locaciones,
|
| 245 |
+
|
| 246 |
+
05:31.560 --> 05:36.840
|
| 247 |
+
perfecto, esta llamada fue de episodios,
|
| 248 |
+
abrimos, vamos a resultados
|
| 249 |
+
|
| 250 |
+
05:36.840 --> 05:41.480
|
| 251 |
+
y entonces aquí tenemos cada uno de los
|
| 252 |
+
episodios de Rig and Marine.
|
| 253 |
+
|
| 254 |
+
05:41.480 --> 05:44.840
|
| 255 |
+
Y listo, ya con esto, esta es la forma en
|
| 256 |
+
la cual tú puedes
|
| 257 |
+
|
| 258 |
+
05:44.840 --> 05:49.880
|
| 259 |
+
de un arreglo de ciertas APIs, hacer de
|
| 260 |
+
forma síncrona
|
| 261 |
+
|
| 262 |
+
05:49.880 --> 05:52.120
|
| 263 |
+
las peticiones a cada una de estas APIs,
|
| 264 |
+
|
| 265 |
+
05:52.120 --> 05:55.160
|
| 266 |
+
que van a estar pasando de manera síncrona,
|
| 267 |
+
esa es la parte importante,
|
| 268 |
+
|
| 269 |
+
05:55.160 --> 05:58.360
|
| 270 |
+
no vas a tener que bloquear, es regresarle
|
| 271 |
+
algo al usuario
|
| 272 |
+
|
| 273 |
+
05:58.360 --> 06:01.640
|
| 274 |
+
o que el usuario esté esperando a que se
|
| 275 |
+
terminen de cumplir tus peticiones,
|
| 276 |
+
|
| 277 |
+
06:01.640 --> 06:04.440
|
| 278 |
+
esto lo dejas de manera síncrona en tu
|
| 279 |
+
promesa,
|
| 280 |
+
|
| 281 |
+
06:04.440 --> 06:07.720
|
| 282 |
+
tú puedes continuar cargando cosas de HTML
|
| 283 |
+
y JavaScript
|
| 284 |
+
|
| 285 |
+
06:07.720 --> 06:11.640
|
| 286 |
+
y una vez que esta respuesta ya esté y la
|
| 287 |
+
promesa se haya cumplido,
|
| 288 |
+
|
| 289 |
+
06:11.640 --> 06:15.080
|
| 290 |
+
entonces te lo regresa y ya tienes la
|
| 291 |
+
información para empezar a
|
| 292 |
+
|
| 293 |
+
06:15.080 --> 06:35.080
|
| 294 |
+
inyectar temas en el DOM y empezar a
|
| 295 |
+
cargar otro tipo de información al usuario.
|
| 296 |
+
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/04-app_e835cf0c-719c-47e7-a782-0ca063e8d59b.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// function fetchData() {
|
| 2 |
+
// fetch("https://rickandmortyapi.com/api/character")
|
| 3 |
+
// .then((response) => response.json())
|
| 4 |
+
// .then((data) => console.log(data))
|
| 5 |
+
// .catch((error) => console.log(error));
|
| 6 |
+
// }
|
| 7 |
+
|
| 8 |
+
async function fetchData() {
|
| 9 |
+
try {
|
| 10 |
+
let response = await fetch("https://rickandmortyapi.com/api/character");
|
| 11 |
+
let data = await response.json();
|
| 12 |
+
console.log(data);
|
| 13 |
+
} catch (error) {
|
| 14 |
+
console.log("Error:", error);
|
| 15 |
+
}
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
const urls = [
|
| 19 |
+
"https://rickandmortyapi.com/api/character",
|
| 20 |
+
"https://rickandmortyapi.com/api/location",
|
| 21 |
+
"https://rickandmortyapi.com/api/episode",
|
| 22 |
+
];
|
| 23 |
+
|
| 24 |
+
async function fetchNewData() {
|
| 25 |
+
try {
|
| 26 |
+
for await (let url of urls) {
|
| 27 |
+
let response = await fetch(url);
|
| 28 |
+
let data = await response.json();
|
| 29 |
+
console.log(data.results);
|
| 30 |
+
}
|
| 31 |
+
} catch (error) {
|
| 32 |
+
console.log(error);
|
| 33 |
+
}
|
| 34 |
+
}
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Fundamentos de HTTP ClienteServidor y Métodos de Petición.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a98c5e5cd344803d714ac9076a951f1ecd526c242e83520869b2c653b681d023
|
| 3 |
+
size 44725453
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Fundamentos de HTTP ClienteServidor y Métodos de Petición.vtt
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:06.240
|
| 4 |
+
HTTP. Posiblemente has escuchado esta palabra.
|
| 5 |
+
Y esto es muy importante entenderlo. Cuando estamos
|
| 6 |
+
|
| 7 |
+
00:06.240 --> 00:10.400
|
| 8 |
+
trabajando en el mundo del desarrollo web,
|
| 9 |
+
ya sea backend o front, tenemos que entender bien
|
| 10 |
+
|
| 11 |
+
00:10.400 --> 00:16.680
|
| 12 |
+
cómo funciona HTTP, ya que esta es la base
|
| 13 |
+
de cuando hablamos de algo que es cliente-servidor.
|
| 14 |
+
|
| 15 |
+
00:16.680 --> 00:21.960
|
| 16 |
+
Entiendas el cliente como un navegador,
|
| 17 |
+
como tu computadora, como posiblemente algún celular,
|
| 18 |
+
|
| 19 |
+
00:21.960 --> 00:26.480
|
| 20 |
+
y el servidor que es el lugar donde se
|
| 21 |
+
está hospedando prácticamente todo el proyecto que
|
| 22 |
+
|
| 23 |
+
00:26.480 --> 00:31.940
|
| 24 |
+
nosotros queremos tener acceso. La base
|
| 25 |
+
del cliente-servidor es la opción que tiene el
|
| 26 |
+
|
| 27 |
+
00:31.940 --> 00:37.600
|
| 28 |
+
cliente de solicitar o enviar información
|
| 29 |
+
al servidor y recibir una respuesta del servidor
|
| 30 |
+
|
| 31 |
+
00:37.600 --> 00:43.440
|
| 32 |
+
para que podamos hacer algo más, ya sea
|
| 33 |
+
renderizar una página o actualizar nuestros datos o enviar
|
| 34 |
+
|
| 35 |
+
00:43.440 --> 00:49.600
|
| 36 |
+
información nueva. Pero ¿cómo funciona
|
| 37 |
+
HTTP? Esto, como te comento, la parte de cliente-servidor
|
| 38 |
+
|
| 39 |
+
00:49.600 --> 00:53.720
|
| 40 |
+
casi siempre va a ser conectado a través
|
| 41 |
+
de una URL. Cuando nosotros llegamos a nuestro
|
| 42 |
+
|
| 43 |
+
00:53.720 --> 01:00.680
|
| 44 |
+
navegador y colocamos platzi.com y le
|
| 45 |
+
damos Enter, empezamos una petición a través de HTTP que va a
|
| 46 |
+
|
| 47 |
+
01:00.680 --> 01:06.360
|
| 48 |
+
llegar directamente al servidor que está
|
| 49 |
+
hospedando Platzi para decirle, oye, necesito que me envíes
|
| 50 |
+
|
| 51 |
+
01:06.360 --> 01:12.800
|
| 52 |
+
esta información para poder hacerla
|
| 53 |
+
renderizar a él o la usuaria en su navegador para que pueda
|
| 54 |
+
|
| 55 |
+
01:12.800 --> 01:18.120
|
| 56 |
+
empezar una interacción. Entonces
|
| 57 |
+
empezamos una petición y esperamos una respuesta de parte del
|
| 58 |
+
|
| 59 |
+
01:18.120 --> 01:22.520
|
| 60 |
+
servidor. La respuesta puede ser como, claro,
|
| 61 |
+
aquí tienes el proyecto completo, renderízalo,
|
| 62 |
+
|
| 63 |
+
01:22.520 --> 01:28.920
|
| 64 |
+
o es un, oye, no encontré lo que estás
|
| 65 |
+
buscando y nos va a regresar un 404. Esto funciona a través
|
| 66 |
+
|
| 67 |
+
01:28.920 --> 01:34.960
|
| 68 |
+
de ciertos verbos. HTTP tiene ciertos
|
| 69 |
+
verbos que nos van a ayudar a generar qué es lo que estamos
|
| 70 |
+
|
| 71 |
+
01:34.960 --> 01:39.640
|
| 72 |
+
buscando, cuál es el tipo de petición que
|
| 73 |
+
nosotros queremos hacer o acción que nosotros queremos
|
| 74 |
+
|
| 75 |
+
01:39.640 --> 01:45.000
|
| 76 |
+
realizar. Estas peticiones son, por ejemplo,
|
| 77 |
+
GET, que es cuando nosotros queremos obtener información.
|
| 78 |
+
|
| 79 |
+
01:45.000 --> 01:51.800
|
| 80 |
+
Cuando ponemos platzi.com, Enter, eso
|
| 81 |
+
genera un GET, que es un, se conecta con el servidor y le dice,
|
| 82 |
+
|
| 83 |
+
01:51.800 --> 01:57.480
|
| 84 |
+
me puedes mandar esta información. Tenemos
|
| 85 |
+
otro verbo que se llama POST, que posiblemente lo ha
|
| 86 |
+
|
| 87 |
+
01:57.480 --> 02:03.440
|
| 88 |
+
utilizado muchísimo en Facebook. Cuando
|
| 89 |
+
querías postear algo que tú a lo mejor estabas viviendo,
|
| 90 |
+
|
| 91 |
+
02:03.440 --> 02:09.080
|
| 92 |
+
que querías compartir con el resto, esa
|
| 93 |
+
parte de postear algo, lo que hace es un, toma la información
|
| 94 |
+
|
| 95 |
+
02:09.080 --> 02:14.720
|
| 96 |
+
que tú acabas de generar, que es
|
| 97 |
+
información nueva, y genera un POST directamente en el servidor para
|
| 98 |
+
|
| 99 |
+
02:14.720 --> 02:20.720
|
| 100 |
+
decirle, oye, el usuario tal está
|
| 101 |
+
guardando o está enviando esta información que es nueva para que la
|
| 102 |
+
|
| 103 |
+
02:20.720 --> 02:27.000
|
| 104 |
+
puedas guardar en su perfil, en su base de
|
| 105 |
+
datos. Y cuando alguien llegara al perfil de este usuario
|
| 106 |
+
|
| 107 |
+
02:27.000 --> 02:32.560
|
| 108 |
+
y se metiera a verlo, generaba un GET de
|
| 109 |
+
toda la información nueva y esa información que se
|
| 110 |
+
|
| 111 |
+
02:32.560 --> 02:38.520
|
| 112 |
+
acababa de guardar ya se puede visualizar.
|
| 113 |
+
También tenemos el PATCH y el PUT, que es como,
|
| 114 |
+
|
| 115 |
+
02:38.520 --> 02:44.160
|
| 116 |
+
cómo actualizamos la información que ya
|
| 117 |
+
existe en el navegador. Si yo de repente mando algún POST y
|
| 118 |
+
|
| 119 |
+
02:44.160 --> 02:49.680
|
| 120 |
+
hay algo que quiero corregir, puedo
|
| 121 |
+
regresar ese POST y poner Editar, genero la edición y vuelvo
|
| 122 |
+
|
| 123 |
+
02:49.680 --> 02:54.960
|
| 124 |
+
a enviar esa petición nueva. No estoy
|
| 125 |
+
generando contenido nuevo, simplemente estoy actualizando
|
| 126 |
+
|
| 127 |
+
02:54.960 --> 03:00.240
|
| 128 |
+
el contenido que ya existe con cosas nuevas.
|
| 129 |
+
Por eso utilizamos el PATCH y el PUT. Y por último,
|
| 130 |
+
|
| 131 |
+
03:00.240 --> 03:04.760
|
| 132 |
+
tenemos un verbo que se llama DELETE,
|
| 133 |
+
que es un, si de repente la fotografía que subí hace 10 años
|
| 134 |
+
|
| 135 |
+
03:04.760 --> 03:09.600
|
| 136 |
+
ya no me convence, simplemente puedo
|
| 137 |
+
borrarla y es la petición que le enviamos al servidor para
|
| 138 |
+
|
| 139 |
+
03:09.600 --> 03:22.600
|
| 140 |
+
decir, oye, este elemento puedes borrarlo.
|
| 141 |
+
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/05-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Peticiones HTTP en Frontend Uso de Fetch y Análisis en Network.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:66c9f613d22a1fd27c186e3efd7ce945aeab81c825392d1d6d9cacf9ec6a4981
|
| 3 |
+
size 55370686
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Peticiones HTTP en Frontend Uso de Fetch y Análisis en Network.vtt
ADDED
|
@@ -0,0 +1,811 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:02.000
|
| 4 |
+
Hablemos de
|
| 5 |
+
HTTP.
|
| 6 |
+
|
| 7 |
+
00:02.000 --> 00:04.000
|
| 8 |
+
Nosotros en la parte del
|
| 9 |
+
front,
|
| 10 |
+
|
| 11 |
+
00:04.000 --> 00:06.000
|
| 12 |
+
hacemos ciertas peticiones, utilizamos
|
| 13 |
+
APIs
|
| 14 |
+
|
| 15 |
+
00:06.000 --> 00:08.000
|
| 16 |
+
para poder pedir información, para
|
| 17 |
+
poder
|
| 18 |
+
|
| 19 |
+
00:08.000 --> 00:10.000
|
| 20 |
+
enviar información o poder borrar información.
|
| 21 |
+
|
| 22 |
+
00:10.000 --> 00:12.000
|
| 23 |
+
Y eso lo estamos haciendo gracias
|
| 24 |
+
a
|
| 25 |
+
|
| 26 |
+
00:12.000 --> 00:14.000
|
| 27 |
+
ciertos métodos de
|
| 28 |
+
HTTP.
|
| 29 |
+
|
| 30 |
+
00:14.000 --> 00:16.000
|
| 31 |
+
Cuando ocupamos Fetch, por
|
| 32 |
+
ejemplo,
|
| 33 |
+
|
| 34 |
+
00:16.000 --> 00:18.000
|
| 35 |
+
nosotros le estamos
|
| 36 |
+
pidiendo
|
| 37 |
+
|
| 38 |
+
00:18.000 --> 00:20.000
|
| 39 |
+
a través de HTTP a
|
| 40 |
+
un
|
| 41 |
+
|
| 42 |
+
00:20.000 --> 00:22.000
|
| 43 |
+
servidor que nos envíe
|
| 44 |
+
cierta
|
| 45 |
+
|
| 46 |
+
00:22.000 --> 00:24.000
|
| 47 |
+
información para poder entonces
|
| 48 |
+
agarrarla
|
| 49 |
+
|
| 50 |
+
00:24.000 --> 00:26.000
|
| 51 |
+
y poderla inyectar en el
|
| 52 |
+
DOM.
|
| 53 |
+
|
| 54 |
+
00:26.000 --> 00:28.000
|
| 55 |
+
Vamos a ir aprendiendo entonces de
|
| 56 |
+
inicio
|
| 57 |
+
|
| 58 |
+
00:28.000 --> 00:30.000
|
| 59 |
+
en la consola del
|
| 60 |
+
navegador
|
| 61 |
+
|
| 62 |
+
00:30.000 --> 00:32.000
|
| 63 |
+
cómo nosotros podemos
|
| 64 |
+
entender
|
| 65 |
+
|
| 66 |
+
00:32.000 --> 00:34.000
|
| 67 |
+
qué tipo de método estamos utilizando,
|
| 68 |
+
|
| 69 |
+
00:34.000 --> 00:36.000
|
| 70 |
+
cómo podemos entender qué tipo de
|
| 71 |
+
información
|
| 72 |
+
|
| 73 |
+
00:36.000 --> 00:38.000
|
| 74 |
+
nos trae, cómo podemos
|
| 75 |
+
entender
|
| 76 |
+
|
| 77 |
+
00:38.000 --> 00:40.000
|
| 78 |
+
de forma mucho más
|
| 79 |
+
deep,
|
| 80 |
+
|
| 81 |
+
00:40.000 --> 00:42.000
|
| 82 |
+
cómo estamos manejando
|
| 83 |
+
HTTP
|
| 84 |
+
|
| 85 |
+
00:42.000 --> 00:44.000
|
| 86 |
+
a través del front para poder
|
| 87 |
+
manipular
|
| 88 |
+
|
| 89 |
+
00:44.000 --> 00:46.000
|
| 90 |
+
las llamadas del
|
| 91 |
+
API,
|
| 92 |
+
|
| 93 |
+
00:46.000 --> 00:48.000
|
| 94 |
+
por ejemplo, para pedir información o para
|
| 95 |
+
poder
|
| 96 |
+
|
| 97 |
+
00:48.000 --> 00:50.000
|
| 98 |
+
enviar información, o cómo yo puedo
|
| 99 |
+
saber
|
| 100 |
+
|
| 101 |
+
00:50.000 --> 00:52.000
|
| 102 |
+
que lo que estoy enviando realmente se
|
| 103 |
+
fue
|
| 104 |
+
|
| 105 |
+
00:52.000 --> 00:54.000
|
| 106 |
+
o lo que yo estoy pidiendo que se borre
|
| 107 |
+
realmente
|
| 108 |
+
|
| 109 |
+
00:54.000 --> 00:56.000
|
| 110 |
+
se está borrando. Así que lo que
|
| 111 |
+
vamos
|
| 112 |
+
|
| 113 |
+
00:56.000 --> 00:58.000
|
| 114 |
+
a estar aprendiendo ahorita
|
| 115 |
+
es
|
| 116 |
+
|
| 117 |
+
00:58.000 --> 01:00.000
|
| 118 |
+
cómo utilizamos HTTP desde la
|
| 119 |
+
parte
|
| 120 |
+
|
| 121 |
+
01:00.000 --> 01:02.000
|
| 122 |
+
del frontend. Aquí tenemos ya
|
| 123 |
+
nuestro
|
| 124 |
+
|
| 125 |
+
01:02.000 --> 01:04.000
|
| 126 |
+
proyecto abierto. Tenemos
|
| 127 |
+
un
|
| 128 |
+
|
| 129 |
+
01:04.000 --> 01:06.000
|
| 130 |
+
HTML sencillo que está
|
| 131 |
+
generando
|
| 132 |
+
|
| 133 |
+
01:06.000 --> 01:08.000
|
| 134 |
+
como un pequeño
|
| 135 |
+
formulario
|
| 136 |
+
|
| 137 |
+
01:08.000 --> 01:10.000
|
| 138 |
+
con algunos
|
| 139 |
+
botones.
|
| 140 |
+
|
| 141 |
+
01:10.000 --> 01:12.000
|
| 142 |
+
Tenemos el CSS, todo esto lo vas a
|
| 143 |
+
encontrar
|
| 144 |
+
|
| 145 |
+
01:12.000 --> 01:14.000
|
| 146 |
+
en recursos, eso es un poco más dinámico.
|
| 147 |
+
|
| 148 |
+
01:14.000 --> 01:16.000
|
| 149 |
+
Y lo que vamos a hacer
|
| 150 |
+
ahorita
|
| 151 |
+
|
| 152 |
+
01:16.000 --> 01:18.000
|
| 153 |
+
es vamos a estar
|
| 154 |
+
trabajando
|
| 155 |
+
|
| 156 |
+
01:18.000 --> 01:20.000
|
| 157 |
+
en el
|
| 158 |
+
JavaScript.
|
| 159 |
+
|
| 160 |
+
01:20.000 --> 01:22.000
|
| 161 |
+
Y en la parte del JavaScript vamos a hacer
|
| 162 |
+
una
|
| 163 |
+
|
| 164 |
+
01:22.000 --> 01:24.000
|
| 165 |
+
petición. Vamos a
|
| 166 |
+
ocupar
|
| 167 |
+
|
| 168 |
+
01:24.000 --> 01:26.000
|
| 169 |
+
Fetch.
|
| 170 |
+
|
| 171 |
+
01:26.000 --> 01:28.000
|
| 172 |
+
Y en Fetch vamos a
|
| 173 |
+
utilizar
|
| 174 |
+
|
| 175 |
+
01:28.000 --> 01:30.000
|
| 176 |
+
una
|
| 177 |
+
API
|
| 178 |
+
|
| 179 |
+
01:30.000 --> 01:32.000
|
| 180 |
+
que nos va a ayudar a
|
| 181 |
+
generar
|
| 182 |
+
|
| 183 |
+
01:32.000 --> 01:34.000
|
| 184 |
+
información. Voy a ponerla
|
| 185 |
+
acá.
|
| 186 |
+
|
| 187 |
+
01:34.000 --> 01:36.000
|
| 188 |
+
Es una API
|
| 189 |
+
que
|
| 190 |
+
|
| 191 |
+
01:36.000 --> 01:38.000
|
| 192 |
+
nos va a ayudar a generar información fake.
|
| 193 |
+
|
| 194 |
+
01:38.000 --> 01:40.000
|
| 195 |
+
Tú puedes tomar
|
| 196 |
+
esta
|
| 197 |
+
|
| 198 |
+
01:40.000 --> 01:42.000
|
| 199 |
+
API y puedes como
|
| 200 |
+
jugar
|
| 201 |
+
|
| 202 |
+
01:42.000 --> 01:44.000
|
| 203 |
+
con esta API que es un
|
| 204 |
+
PressHolder.
|
| 205 |
+
|
| 206 |
+
01:44.000 --> 01:46.000
|
| 207 |
+
Nos regresa información fake,
|
| 208 |
+
por
|
| 209 |
+
|
| 210 |
+
01:46.000 --> 01:48.000
|
| 211 |
+
ejemplo, de
|
| 212 |
+
usuarios,
|
| 213 |
+
|
| 214 |
+
01:48.000 --> 01:50.000
|
| 215 |
+
de títulos,
|
| 216 |
+
de
|
| 217 |
+
|
| 218 |
+
01:50.000 --> 01:52.000
|
| 219 |
+
ciertos blog posts y
|
| 220 |
+
demás,
|
| 221 |
+
|
| 222 |
+
01:52.000 --> 01:54.000
|
| 223 |
+
para que tú puedas
|
| 224 |
+
utilizarla.
|
| 225 |
+
|
| 226 |
+
01:54.000 --> 01:56.000
|
| 227 |
+
Y es lo que vamos a estar utilizando
|
| 228 |
+
ahorita para poder
|
| 229 |
+
|
| 230 |
+
01:56.000 --> 01:58.000
|
| 231 |
+
hacer una petición. Ahora, cuando
|
| 232 |
+
estamos
|
| 233 |
+
|
| 234 |
+
01:58.000 --> 02:00.000
|
| 235 |
+
hablando de HTTP, es
|
| 236 |
+
importante
|
| 237 |
+
|
| 238 |
+
02:00.000 --> 02:02.000
|
| 239 |
+
poder conocer estos números. Por ejemplo,
|
| 240 |
+
|
| 241 |
+
02:02.000 --> 02:04.000
|
| 242 |
+
en ocasiones, cuando tú estás
|
| 243 |
+
haciendo
|
| 244 |
+
|
| 245 |
+
02:04.000 --> 02:06.000
|
| 246 |
+
alguna petición, a lo mejor
|
| 247 |
+
has
|
| 248 |
+
|
| 249 |
+
02:06.000 --> 02:08.000
|
| 250 |
+
visto que te regresa un
|
| 251 |
+
404.
|
| 252 |
+
|
| 253 |
+
02:08.000 --> 02:10.000
|
| 254 |
+
Existen números con
|
| 255 |
+
significados
|
| 256 |
+
|
| 257 |
+
02:10.000 --> 02:12.000
|
| 258 |
+
desde un 200, desde un
|
| 259 |
+
300,
|
| 260 |
+
|
| 261 |
+
02:12.000 --> 02:14.000
|
| 262 |
+
desde un 400 y
|
| 263 |
+
500.
|
| 264 |
+
|
| 265 |
+
02:14.000 --> 02:16.000
|
| 266 |
+
No tienes que sabértelo
|
| 267 |
+
todo,
|
| 268 |
+
|
| 269 |
+
02:16.000 --> 02:18.000
|
| 270 |
+
por eso es bueno tener una referencia.
|
| 271 |
+
|
| 272 |
+
02:18.000 --> 02:20.000
|
| 273 |
+
Y en esta página vas a poder tener una
|
| 274 |
+
referencia
|
| 275 |
+
|
| 276 |
+
02:20.000 --> 02:22.000
|
| 277 |
+
con datos de
|
| 278 |
+
qué
|
| 279 |
+
|
| 280 |
+
02:22.000 --> 02:24.000
|
| 281 |
+
significa cada uno de
|
| 282 |
+
estos
|
| 283 |
+
|
| 284 |
+
02:24.000 --> 02:26.000
|
| 285 |
+
números. Por ejemplo, cuando
|
| 286 |
+
hablamos
|
| 287 |
+
|
| 288 |
+
02:26.000 --> 02:28.000
|
| 289 |
+
de un 200, quiere decir
|
| 290 |
+
que
|
| 291 |
+
|
| 292 |
+
02:28.000 --> 02:30.000
|
| 293 |
+
todo está OK, la petición
|
| 294 |
+
funcionó.
|
| 295 |
+
|
| 296 |
+
02:30.000 --> 02:32.000
|
| 297 |
+
Si nos vamos a
|
| 298 |
+
un
|
| 299 |
+
|
| 300 |
+
02:32.000 --> 02:34.000
|
| 301 |
+
404,
|
| 302 |
+
|
| 303 |
+
02:34.000 --> 02:36.000
|
| 304 |
+
significa que lo que estamos
|
| 305 |
+
buscando
|
| 306 |
+
|
| 307 |
+
02:36.000 --> 02:38.000
|
| 308 |
+
nos encontró. Entonces, si
|
| 309 |
+
quieres
|
| 310 |
+
|
| 311 |
+
02:38.000 --> 02:40.000
|
| 312 |
+
profundizar un poco más en estos
|
| 313 |
+
números
|
| 314 |
+
|
| 315 |
+
02:40.000 --> 02:42.000
|
| 316 |
+
que estamos viendo directamente de
|
| 317 |
+
HTTP
|
| 318 |
+
|
| 319 |
+
02:42.000 --> 02:44.000
|
| 320 |
+
o que pueden
|
| 321 |
+
venir
|
| 322 |
+
|
| 323 |
+
02:44.000 --> 02:46.000
|
| 324 |
+
en los headers, te dejo esta referencia.
|
| 325 |
+
|
| 326 |
+
02:46.000 --> 02:48.000
|
| 327 |
+
Ya
|
| 328 |
+
que
|
| 329 |
+
|
| 330 |
+
02:48.000 --> 02:50.000
|
| 331 |
+
estamos aquí, entonces, venimos a
|
| 332 |
+
nuestro
|
| 333 |
+
|
| 334 |
+
02:50.000 --> 02:52.000
|
| 335 |
+
Fetch y colocamos
|
| 336 |
+
el
|
| 337 |
+
|
| 338 |
+
02:52.000 --> 02:54.000
|
| 339 |
+
API que vamos a utilizar.
|
| 340 |
+
Particularmente
|
| 341 |
+
|
| 342 |
+
02:54.000 --> 02:56.000
|
| 343 |
+
yo voy a ir a los Posts, quiero
|
| 344 |
+
la
|
| 345 |
+
|
| 346 |
+
02:56.000 --> 02:58.000
|
| 347 |
+
información. Ya que estamos
|
| 348 |
+
ahí,
|
| 349 |
+
|
| 350 |
+
02:58.000 --> 03:00.000
|
| 351 |
+
damos
|
| 352 |
+
esto,
|
| 353 |
+
|
| 354 |
+
03:00.000 --> 03:02.000
|
| 355 |
+
generamos
|
| 356 |
+
nuestro
|
| 357 |
+
|
| 358 |
+
03:02.000 --> 03:04.000
|
| 359 |
+
then, y con nuestro
|
| 360 |
+
then
|
| 361 |
+
|
| 362 |
+
03:04.000 --> 03:06.000
|
| 363 |
+
quiero que
|
| 364 |
+
entonces
|
| 365 |
+
|
| 366 |
+
03:06.000 --> 03:08.000
|
| 367 |
+
la
|
| 368 |
+
respuesta
|
| 369 |
+
|
| 370 |
+
03:10.000 --> 03:12.000
|
| 371 |
+
la convierte
|
| 372 |
+
en
|
| 373 |
+
|
| 374 |
+
03:12.000 --> 03:18.000
|
| 375 |
+
response.so.json
|
| 376 |
+
|
| 377 |
+
03:18.000 --> 03:20.000
|
| 378 |
+
Y si esto
|
| 379 |
+
funciona,
|
| 380 |
+
|
| 381 |
+
03:20.000 --> 03:22.000
|
| 382 |
+
entonces then, quiero
|
| 383 |
+
que
|
| 384 |
+
|
| 385 |
+
03:22.000 --> 03:24.000
|
| 386 |
+
esta
|
| 387 |
+
data
|
| 388 |
+
|
| 389 |
+
03:26.000 --> 03:28.000
|
| 390 |
+
me la
|
| 391 |
+
imprima
|
| 392 |
+
|
| 393 |
+
03:28.000 --> 03:30.000
|
| 394 |
+
console.log
|
| 395 |
+
|
| 396 |
+
03:30.000 --> 03:32.000
|
| 397 |
+
y quiero que me imprima
|
| 398 |
+
la
|
| 399 |
+
|
| 400 |
+
03:32.000 --> 03:34.000
|
| 401 |
+
data que me va a
|
| 402 |
+
traer.
|
| 403 |
+
|
| 404 |
+
03:34.000 --> 03:36.000
|
| 405 |
+
Perfecto. En este
|
| 406 |
+
momento,
|
| 407 |
+
|
| 408 |
+
03:36.000 --> 03:38.000
|
| 409 |
+
al yo
|
| 410 |
+
darle
|
| 411 |
+
|
| 412 |
+
03:38.000 --> 03:40.000
|
| 413 |
+
Enter,
|
| 414 |
+
|
| 415 |
+
03:40.000 --> 03:42.000
|
| 416 |
+
al estar
|
| 417 |
+
guardando,
|
| 418 |
+
|
| 419 |
+
03:42.000 --> 03:44.000
|
| 420 |
+
se está haciendo
|
| 421 |
+
una
|
| 422 |
+
|
| 423 |
+
03:44.000 --> 03:46.000
|
| 424 |
+
petición. Y
|
| 425 |
+
podemos
|
| 426 |
+
|
| 427 |
+
03:46.000 --> 03:48.000
|
| 428 |
+
ver que esta petición funciona, porque
|
| 429 |
+
aquí ya me
|
| 430 |
+
|
| 431 |
+
03:48.000 --> 03:50.000
|
| 432 |
+
trae
|
| 433 |
+
|
| 434 |
+
03:50.000 --> 03:52.000
|
| 435 |
+
la información, la información de la
|
| 436 |
+
cual
|
| 437 |
+
|
| 438 |
+
03:52.000 --> 03:54.000
|
| 439 |
+
desde la consola yo puedo
|
| 440 |
+
ver
|
| 441 |
+
|
| 442 |
+
03:54.000 --> 03:56.000
|
| 443 |
+
y ya podría empezar a utilizar desde
|
| 444 |
+
la
|
| 445 |
+
|
| 446 |
+
03:56.000 --> 03:58.000
|
| 447 |
+
parte del front, para empezar
|
| 448 |
+
a
|
| 449 |
+
|
| 450 |
+
03:58.000 --> 04:00.000
|
| 451 |
+
desglosar
|
| 452 |
+
este
|
| 453 |
+
|
| 454 |
+
04:00.000 --> 04:02.000
|
| 455 |
+
arreglo de
|
| 456 |
+
objetos
|
| 457 |
+
|
| 458 |
+
04:02.000 --> 04:04.000
|
| 459 |
+
para empezar a traer ya
|
| 460 |
+
sea
|
| 461 |
+
|
| 462 |
+
04:04.000 --> 04:06.000
|
| 463 |
+
la información del usuario, ya sea el título,
|
| 464 |
+
|
| 465 |
+
04:06.000 --> 04:08.000
|
| 466 |
+
ya sea la información
|
| 467 |
+
que
|
| 468 |
+
|
| 469 |
+
04:08.000 --> 04:10.000
|
| 470 |
+
yo requiera para poder inyectar acá,
|
| 471 |
+
|
| 472 |
+
04:10.000 --> 04:12.000
|
| 473 |
+
que lo vamos a ver después. Entonces, ahorita,
|
| 474 |
+
|
| 475 |
+
04:12.000 --> 04:14.000
|
| 476 |
+
si no se estuviera
|
| 477 |
+
imprimiendo
|
| 478 |
+
|
| 479 |
+
04:14.000 --> 04:16.000
|
| 480 |
+
aquí, ¿cómo puedo yo saber
|
| 481 |
+
que
|
| 482 |
+
|
| 483 |
+
04:16.000 --> 04:18.000
|
| 484 |
+
existe esta interacción con el servidor?
|
| 485 |
+
¿Cómo
|
| 486 |
+
|
| 487 |
+
04:18.000 --> 04:20.000
|
| 488 |
+
puedo yo saber cuál es la
|
| 489 |
+
respuesta
|
| 490 |
+
|
| 491 |
+
04:20.000 --> 04:22.000
|
| 492 |
+
que me está dando? Y vamos a
|
| 493 |
+
ir
|
| 494 |
+
|
| 495 |
+
04:22.000 --> 04:24.000
|
| 496 |
+
a otra parte, a otro
|
| 497 |
+
segmento
|
| 498 |
+
|
| 499 |
+
04:24.000 --> 04:26.000
|
| 500 |
+
de la consola de navegador que se
|
| 501 |
+
llama
|
| 502 |
+
|
| 503 |
+
04:26.000 --> 04:28.000
|
| 504 |
+
Network.
|
| 505 |
+
|
| 506 |
+
04:28.000 --> 04:30.000
|
| 507 |
+
Abrimos el
|
| 508 |
+
Network
|
| 509 |
+
|
| 510 |
+
04:30.000 --> 04:32.000
|
| 511 |
+
y aquí en Network es
|
| 512 |
+
donde
|
| 513 |
+
|
| 514 |
+
04:32.000 --> 04:34.000
|
| 515 |
+
podemos ver cómo suceden
|
| 516 |
+
los
|
| 517 |
+
|
| 518 |
+
04:34.000 --> 04:36.000
|
| 519 |
+
request, cómo sucede todo, cómo
|
| 520 |
+
se
|
| 521 |
+
|
| 522 |
+
04:36.000 --> 04:38.000
|
| 523 |
+
está cargando cada uno
|
| 524 |
+
de
|
| 525 |
+
|
| 526 |
+
04:38.000 --> 04:40.000
|
| 527 |
+
los insumos que tiene mi página,
|
| 528 |
+
desde
|
| 529 |
+
|
| 530 |
+
04:40.000 --> 04:42.000
|
| 531 |
+
la parte de HTML, la parte de
|
| 532 |
+
CSS,
|
| 533 |
+
|
| 534 |
+
04:42.000 --> 04:44.000
|
| 535 |
+
cada una de las cosas que
|
| 536 |
+
requiere
|
| 537 |
+
|
| 538 |
+
04:44.000 --> 04:46.000
|
| 539 |
+
mi proyecto, podemos
|
| 540 |
+
ir
|
| 541 |
+
|
| 542 |
+
04:46.000 --> 04:48.000
|
| 543 |
+
viendo cómo se empiezan a
|
| 544 |
+
cargar.
|
| 545 |
+
|
| 546 |
+
04:48.000 --> 04:50.000
|
| 547 |
+
Si yo
|
| 548 |
+
refresco,
|
| 549 |
+
|
| 550 |
+
04:50.000 --> 04:52.000
|
| 551 |
+
podemos ver cómo
|
| 552 |
+
se
|
| 553 |
+
|
| 554 |
+
04:52.000 --> 04:54.000
|
| 555 |
+
cargan como ciertos screenshots de la página,
|
| 556 |
+
|
| 557 |
+
04:54.000 --> 04:56.000
|
| 558 |
+
me pone ciertos números que me habla de
|
| 559 |
+
la
|
| 560 |
+
|
| 561 |
+
04:56.000 --> 04:58.000
|
| 562 |
+
velocidad, el tiempo que
|
| 563 |
+
tarda
|
| 564 |
+
|
| 565 |
+
04:58.000 --> 05:00.000
|
| 566 |
+
o que se demora en que yo pueda empezar a
|
| 567 |
+
ver
|
| 568 |
+
|
| 569 |
+
05:00.000 --> 05:02.000
|
| 570 |
+
ciertas cosas, pero
|
| 571 |
+
nosotros
|
| 572 |
+
|
| 573 |
+
05:02.000 --> 05:04.000
|
| 574 |
+
vamos a basar
|
| 575 |
+
ahorita
|
| 576 |
+
|
| 577 |
+
05:04.000 --> 05:06.000
|
| 578 |
+
en estos archivos. Voy
|
| 579 |
+
a
|
| 580 |
+
|
| 581 |
+
05:06.000 --> 05:08.000
|
| 582 |
+
ponerle en todos, para
|
| 583 |
+
no
|
| 584 |
+
|
| 585 |
+
05:08.000 --> 05:10.000
|
| 586 |
+
filtrar y te vas a dar cuenta que
|
| 587 |
+
hay
|
| 588 |
+
|
| 589 |
+
05:10.000 --> 05:12.000
|
| 590 |
+
mucha información aquí.
|
| 591 |
+
Tenemos
|
| 592 |
+
|
| 593 |
+
05:12.000 --> 05:14.000
|
| 594 |
+
aquí la petición de HTML, tenemos
|
| 595 |
+
aquí
|
| 596 |
+
|
| 597 |
+
05:14.000 --> 05:16.000
|
| 598 |
+
la petición de nuestro
|
| 599 |
+
JavaScript,
|
| 600 |
+
|
| 601 |
+
05:16.000 --> 05:18.000
|
| 602 |
+
pero aquí viene una petición que me
|
| 603 |
+
importa que se llama
|
| 604 |
+
|
| 605 |
+
05:18.000 --> 05:20.000
|
| 606 |
+
POST. Vemos
|
| 607 |
+
que
|
| 608 |
+
|
| 609 |
+
05:20.000 --> 05:22.000
|
| 610 |
+
se está generando un método
|
| 611 |
+
GET
|
| 612 |
+
|
| 613 |
+
05:22.000 --> 05:24.000
|
| 614 |
+
de HTML, vemos
|
| 615 |
+
a
|
| 616 |
+
|
| 617 |
+
05:24.000 --> 05:26.000
|
| 618 |
+
qué URL se está enviando
|
| 619 |
+
eso
|
| 620 |
+
|
| 621 |
+
05:26.000 --> 05:28.000
|
| 622 |
+
y de la URL, pues
|
| 623 |
+
prácticamente
|
| 624 |
+
|
| 625 |
+
05:28.000 --> 05:30.000
|
| 626 |
+
es el API que yo
|
| 627 |
+
estoy
|
| 628 |
+
|
| 629 |
+
05:30.000 --> 05:32.000
|
| 630 |
+
utilizando. Podemos ver que el
|
| 631 |
+
status
|
| 632 |
+
|
| 633 |
+
05:32.000 --> 05:34.000
|
| 634 |
+
fue 200,
|
| 635 |
+
podemos
|
| 636 |
+
|
| 637 |
+
05:34.000 --> 05:36.000
|
| 638 |
+
ver aquí que el tipo
|
| 639 |
+
fue
|
| 640 |
+
|
| 641 |
+
05:36.000 --> 05:38.000
|
| 642 |
+
PITCH, fue prácticamente lo que yo
|
| 643 |
+
utilicé
|
| 644 |
+
|
| 645 |
+
05:38.000 --> 05:40.000
|
| 646 |
+
y que se está inicializando en
|
| 647 |
+
nuestro
|
| 648 |
+
|
| 649 |
+
05:40.000 --> 05:42.000
|
| 650 |
+
JavaScript. Aquí incluso podemos
|
| 651 |
+
ver
|
| 652 |
+
|
| 653 |
+
05:42.000 --> 05:44.000
|
| 654 |
+
el tiempo que
|
| 655 |
+
demora
|
| 656 |
+
|
| 657 |
+
05:44.000 --> 05:46.000
|
| 658 |
+
en que tengamos la
|
| 659 |
+
respuesta
|
| 660 |
+
|
| 661 |
+
05:46.000 --> 05:48.000
|
| 662 |
+
de esta
|
| 663 |
+
petición.
|
| 664 |
+
|
| 665 |
+
05:48.000 --> 05:50.000
|
| 666 |
+
Ahora, si yo le doy click aquí en POST,
|
| 667 |
+
|
| 668 |
+
05:50.000 --> 05:52.000
|
| 669 |
+
puedo ver la parte
|
| 670 |
+
de
|
| 671 |
+
|
| 672 |
+
05:52.000 --> 05:54.000
|
| 673 |
+
el PREVIEW, que es lo que me regresa,
|
| 674 |
+
que esto
|
| 675 |
+
|
| 676 |
+
05:54.000 --> 05:56.000
|
| 677 |
+
también lo puedo ver en la consola
|
| 678 |
+
de
|
| 679 |
+
|
| 680 |
+
05:56.000 --> 05:58.000
|
| 681 |
+
navegador, es lo que le estoy
|
| 682 |
+
pidiendo
|
| 683 |
+
|
| 684 |
+
05:58.000 --> 06:00.000
|
| 685 |
+
a la petición que me
|
| 686 |
+
regrese
|
| 687 |
+
|
| 688 |
+
06:00.000 --> 06:02.000
|
| 689 |
+
una vez que yo
|
| 690 |
+
le
|
| 691 |
+
|
| 692 |
+
06:02.000 --> 06:04.000
|
| 693 |
+
pongo el
|
| 694 |
+
console.log.data
|
| 695 |
+
|
| 696 |
+
06:04.000 --> 06:06.000
|
| 697 |
+
podemos ver la
|
| 698 |
+
respuesta
|
| 699 |
+
|
| 700 |
+
06:06.000 --> 06:08.000
|
| 701 |
+
que entonces ya esto
|
| 702 |
+
sería
|
| 703 |
+
|
| 704 |
+
06:08.000 --> 06:10.000
|
| 705 |
+
nuestro JSON, que es como
|
| 706 |
+
viene
|
| 707 |
+
|
| 708 |
+
06:10.000 --> 06:12.000
|
| 709 |
+
la estructura de los datos en
|
| 710 |
+
un
|
| 711 |
+
|
| 712 |
+
06:12.000 --> 06:14.000
|
| 713 |
+
JSON, pero me interesa el
|
| 714 |
+
header.
|
| 715 |
+
|
| 716 |
+
06:14.000 --> 06:16.000
|
| 717 |
+
En el header puedo ver
|
| 718 |
+
como
|
| 719 |
+
|
| 720 |
+
06:16.000 --> 06:18.000
|
| 721 |
+
a qué URL le hice esa
|
| 722 |
+
petición.
|
| 723 |
+
|
| 724 |
+
06:18.000 --> 06:20.000
|
| 725 |
+
Le puedo ver, por
|
| 726 |
+
ejemplo,
|
| 727 |
+
|
| 728 |
+
06:20.000 --> 06:22.000
|
| 729 |
+
qué tipo de método
|
| 730 |
+
utilicé.
|
| 731 |
+
|
| 732 |
+
06:22.000 --> 06:24.000
|
| 733 |
+
FETCH, cuando
|
| 734 |
+
nosotros
|
| 735 |
+
|
| 736 |
+
06:24.000 --> 06:26.000
|
| 737 |
+
utilizamos FETCH por
|
| 738 |
+
defecto,
|
| 739 |
+
|
| 740 |
+
06:26.000 --> 06:28.000
|
| 741 |
+
FETCH utiliza siempre el
|
| 742 |
+
GET.
|
| 743 |
+
|
| 744 |
+
06:28.000 --> 06:30.000
|
| 745 |
+
Lo que va a intentar hacer
|
| 746 |
+
FETCH
|
| 747 |
+
|
| 748 |
+
06:30.000 --> 06:32.000
|
| 749 |
+
siempre por defecto,
|
| 750 |
+
es
|
| 751 |
+
|
| 752 |
+
06:32.000 --> 06:34.000
|
| 753 |
+
lanzar una
|
| 754 |
+
petición
|
| 755 |
+
|
| 756 |
+
06:34.000 --> 06:36.000
|
| 757 |
+
al servidor, va a intentar hacer
|
| 758 |
+
siempre
|
| 759 |
+
|
| 760 |
+
06:36.000 --> 06:38.000
|
| 761 |
+
un GET. Y podemos ver que
|
| 762 |
+
el
|
| 763 |
+
|
| 764 |
+
06:38.000 --> 06:40.000
|
| 765 |
+
status fue un 200,
|
| 766 |
+
porque
|
| 767 |
+
|
| 768 |
+
06:40.000 --> 06:42.000
|
| 769 |
+
nosotros tuvimos la respuesta, que lo
|
| 770 |
+
estamos
|
| 771 |
+
|
| 772 |
+
06:42.000 --> 06:44.000
|
| 773 |
+
viendo aquí. En
|
| 774 |
+
este
|
| 775 |
+
|
| 776 |
+
06:44.000 --> 06:46.000
|
| 777 |
+
momento, nosotros ya
|
| 778 |
+
estamos
|
| 779 |
+
|
| 780 |
+
06:46.000 --> 06:48.000
|
| 781 |
+
teniendo
|
| 782 |
+
control
|
| 783 |
+
|
| 784 |
+
06:48.000 --> 06:50.000
|
| 785 |
+
de HTTP. Aquí
|
| 786 |
+
podemos
|
| 787 |
+
|
| 788 |
+
06:50.000 --> 06:52.000
|
| 789 |
+
ver que ya estamos haciendo
|
| 790 |
+
un
|
| 791 |
+
|
| 792 |
+
06:52.000 --> 06:54.000
|
| 793 |
+
GET, a qué tipo de
|
| 794 |
+
URL
|
| 795 |
+
|
| 796 |
+
06:54.000 --> 06:56.000
|
| 797 |
+
estamos haciendo esa petición, y
|
| 798 |
+
cuál
|
| 799 |
+
|
| 800 |
+
06:56.000 --> 06:58.000
|
| 801 |
+
fue el status
|
| 802 |
+
de
|
| 803 |
+
|
| 804 |
+
06:58.000 --> 07:00.000
|
| 805 |
+
esa petición. Y podemos ver de
|
| 806 |
+
igual
|
| 807 |
+
|
| 808 |
+
07:00.000 --> 07:26.000
|
| 809 |
+
forma qué es lo que nos
|
| 810 |
+
regresa.
|
| 811 |
+
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/06-app_954bf774-9dc6-4b66-b9bb-9935d30de91d.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fetch("https://jsonplaceholder.typicode.com/posts")
|
| 2 |
+
.then((response) => response.json())
|
| 3 |
+
.then((data) => console.log(data));
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Peticiones HTTP en JavaScript Fetch GET POST y DELETE.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d5ade601696a8bcc5cd1a3906fdf079999739e74f7346c34f4425154a1290486
|
| 3 |
+
size 94807588
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Peticiones HTTP en JavaScript Fetch GET POST y DELETE.vtt
ADDED
|
@@ -0,0 +1,631 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:05.560
|
| 4 |
+
Veamos entonces cómo podemos hacer una
|
| 5 |
+
petición y empezar a interactuar con lo
|
| 6 |
+
|
| 7 |
+
00:05.560 --> 00:09.100
|
| 8 |
+
que nos trae esa petición. Vamos a venir aquí,
|
| 9 |
+
vamos a hacer un poco
|
| 10 |
+
|
| 11 |
+
00:09.100 --> 00:17.060
|
| 12 |
+
más chico nuestro editor. Venimos a
|
| 13 |
+
nuestro navegador. Ok. Aquí tienes el HTML.
|
| 14 |
+
|
| 15 |
+
00:17.060 --> 00:23.620
|
| 16 |
+
Vamos a cerrarlo y venimos aquí a nuestro
|
| 17 |
+
JavaScript. Con nuestro JavaScript, lo
|
| 18 |
+
|
| 19 |
+
00:23.620 --> 00:27.540
|
| 20 |
+
primero que queremos hacer es, ya que
|
| 21 |
+
tenemos una petición, acabamos de hacer
|
| 22 |
+
|
| 23 |
+
00:27.540 --> 00:32.980
|
| 24 |
+
un fetch, vamos a ver de qué forma podemos
|
| 25 |
+
escalar más. Si vamos a estar
|
| 26 |
+
|
| 27 |
+
00:32.980 --> 00:38.980
|
| 28 |
+
haciendo diferentes peticiones como un GET,
|
| 29 |
+
tipo un GET, tipo un POST, tipo un DELETE,
|
| 30 |
+
|
| 31 |
+
00:38.980 --> 00:43.340
|
| 32 |
+
de qué forma podemos ir escalando cada una
|
| 33 |
+
de estas peticiones. Lo que yo haría
|
| 34 |
+
|
| 35 |
+
00:43.340 --> 00:49.500
|
| 36 |
+
sería empezaríamos con una función que se
|
| 37 |
+
va a llamar,
|
| 38 |
+
|
| 39 |
+
00:49.500 --> 01:01.460
|
| 40 |
+
por ejemplo, sendHttpRequest. Y esta va a
|
| 41 |
+
ser la función que mandaríamos llamar
|
| 42 |
+
|
| 43 |
+
01:01.460 --> 01:06.540
|
| 44 |
+
para poder hacer las peticiones. Esta
|
| 45 |
+
función va a llevar
|
| 46 |
+
|
| 47 |
+
01:06.540 --> 01:12.020
|
| 48 |
+
tres parámetros. El primer parámetro va a
|
| 49 |
+
ser el método, el método que se va a
|
| 50 |
+
|
| 51 |
+
01:12.020 --> 01:17.500
|
| 52 |
+
utilizar. El segundo parámetro va a ser la
|
| 53 |
+
URL, con la cual le vamos a hacer como
|
| 54 |
+
|
| 55 |
+
01:17.500 --> 01:24.660
|
| 56 |
+
esa petición. Y el tercer parámetro va a
|
| 57 |
+
ser el tipo de dato que vamos a enviar.
|
| 58 |
+
|
| 59 |
+
01:24.900 --> 01:31.660
|
| 60 |
+
Perfecto. Entonces, ahora con esto, lo que
|
| 61 |
+
vamos a hacer es, vamos a poner
|
| 62 |
+
|
| 63 |
+
01:31.660 --> 01:39.900
|
| 64 |
+
return y vamos a generar un fetch. Y el
|
| 65 |
+
fetch va a llevar de inicio
|
| 66 |
+
|
| 67 |
+
01:39.900 --> 01:44.540
|
| 68 |
+
la URL que le vamos a pasar, que va a ser
|
| 69 |
+
el parámetro cuando mandemos llamar
|
| 70 |
+
|
| 71 |
+
01:44.540 --> 01:49.980
|
| 72 |
+
nuestra función, a qué URL le vamos a
|
| 73 |
+
hacer el fetch.
|
| 74 |
+
|
| 75 |
+
01:49.980 --> 01:54.300
|
| 76 |
+
Y aquí vamos a estructurar de forma
|
| 77 |
+
distinta
|
| 78 |
+
|
| 79 |
+
01:54.300 --> 01:58.740
|
| 80 |
+
qué es lo que vamos a utilizar para el fetch.
|
| 81 |
+
Vamos a poner
|
| 82 |
+
|
| 83 |
+
01:58.740 --> 02:04.260
|
| 84 |
+
ahora el tipo de método que vamos a utilizar.
|
| 85 |
+
Y esto va a ser
|
| 86 |
+
|
| 87 |
+
02:04.260 --> 02:12.020
|
| 88 |
+
igual a el método. Bien, ahora la
|
| 89 |
+
estructura del request
|
| 90 |
+
|
| 91 |
+
02:12.020 --> 02:17.780
|
| 92 |
+
trae un body y trae un header. En el body,
|
| 93 |
+
por ejemplo, cuando nosotros
|
| 94 |
+
|
| 95 |
+
02:17.780 --> 02:21.740
|
| 96 |
+
hacemos un post, tenemos que enviar la
|
| 97 |
+
información que estamos enviando
|
| 98 |
+
|
| 99 |
+
02:21.740 --> 02:28.980
|
| 100 |
+
directamente al servidor. Esto iría en el
|
| 101 |
+
body del request. Y la forma de enviar
|
| 102 |
+
|
| 103 |
+
02:28.980 --> 02:33.020
|
| 104 |
+
es un JSON
|
| 105 |
+
punto
|
| 106 |
+
|
| 107 |
+
02:33.900 --> 02:39.420
|
| 108 |
+
stringify
|
| 109 |
+
data.
|
| 110 |
+
|
| 111 |
+
02:39.420 --> 02:45.740
|
| 112 |
+
Que lo que hace el stringify es convierte
|
| 113 |
+
el objeto de yes en JSON.
|
| 114 |
+
|
| 115 |
+
02:45.740 --> 02:51.980
|
| 116 |
+
Y ahora el tipo de header, que son los
|
| 117 |
+
headers del request, que es lo que vamos
|
| 118 |
+
|
| 119 |
+
02:51.980 --> 02:57.140
|
| 120 |
+
a estar enviando. Y aquí en la parte de
|
| 121 |
+
los headers, hay cierta información que
|
| 122 |
+
|
| 123 |
+
02:57.140 --> 03:01.500
|
| 124 |
+
se está guardando. Pero de inicio, la
|
| 125 |
+
información que yo le voy a decir
|
| 126 |
+
|
| 127 |
+
03:01.500 --> 03:08.500
|
| 128 |
+
que vamos a enviar, es vamos a enviar un JSON,
|
| 129 |
+
un tipo de contenido en
|
| 130 |
+
|
| 131 |
+
03:08.500 --> 03:13.500
|
| 132 |
+
JSON, para que se sepa cómo tratar el
|
| 133 |
+
contenido o la data que vamos a enviar
|
| 134 |
+
|
| 135 |
+
03:13.500 --> 03:18.060
|
| 136 |
+
nosotros. Y eso se hace de esta forma.
|
| 137 |
+
|
| 138 |
+
03:18.220 --> 03:22.220
|
| 139 |
+
Content
|
| 140 |
+
type.
|
| 141 |
+
|
| 142 |
+
03:22.300 --> 03:30.540
|
| 143 |
+
Y aquí le decimos que es un application
|
| 144 |
+
slash JSON.
|
| 145 |
+
|
| 146 |
+
03:30.540 --> 03:34.540
|
| 147 |
+
Perfecto. Entonces aquí estamos enviando
|
| 148 |
+
la
|
| 149 |
+
|
| 150 |
+
03:34.540 --> 03:39.660
|
| 151 |
+
url, que nos van a pasar como parámetro
|
| 152 |
+
una vez que pongamos la función. Y aquí
|
| 153 |
+
|
| 154 |
+
03:39.660 --> 03:44.540
|
| 155 |
+
le estamos enviando todos los metadatos
|
| 156 |
+
que requiere ser request. El tipo de
|
| 157 |
+
|
| 158 |
+
03:44.540 --> 03:49.460
|
| 159 |
+
método, lo que viene en el body, si aplica
|
| 160 |
+
y cuáles van a ser los headers
|
| 161 |
+
|
| 162 |
+
03:49.460 --> 03:54.020
|
| 163 |
+
que vamos a estar enviando. Súper bien.
|
| 164 |
+
Ya que tenemos eso,
|
| 165 |
+
|
| 166 |
+
03:54.020 --> 03:57.380
|
| 167 |
+
ahora vamos a enviar, como estamos
|
| 168 |
+
utilizando un fetch, y esto es una
|
| 169 |
+
|
| 170 |
+
03:57.380 --> 04:03.540
|
| 171 |
+
promesa, vamos a utilizar el den, para que
|
| 172 |
+
el den nos regrese la respuesta.
|
| 173 |
+
|
| 174 |
+
04:03.540 --> 04:07.740
|
| 175 |
+
Porque lo que estamos haciendo aquí es
|
| 176 |
+
enviando el request y queremos que nos
|
| 177 |
+
|
| 178 |
+
04:07.740 --> 04:11.820
|
| 179 |
+
regrese una respuesta, para que cuando
|
| 180 |
+
utilicemos esta función, tengamos los
|
| 181 |
+
|
| 182 |
+
04:11.820 --> 04:20.420
|
| 183 |
+
datos de esa respuesta. Entonces aquí sea
|
| 184 |
+
response, y eso va a ser igual a,
|
| 185 |
+
|
| 186 |
+
04:20.500 --> 04:27.620
|
| 187 |
+
queremos que, return, que nos regrese la
|
| 188 |
+
respuesta.
|
| 189 |
+
|
| 190 |
+
04:28.300 --> 04:33.380
|
| 191 |
+
Para que entonces ya con esto, nosotros
|
| 192 |
+
podamos hacer algo. Ok, Zoom, ya que
|
| 193 |
+
|
| 194 |
+
04:33.380 --> 04:37.100
|
| 195 |
+
tenemos esta respuesta, podemos empezar a
|
| 196 |
+
trabajarla en la parte de front, para
|
| 197 |
+
|
| 198 |
+
04:37.100 --> 04:42.380
|
| 199 |
+
inyectarla en nuestro HTML. Bien, vamos a
|
| 200 |
+
guardar.
|
| 201 |
+
|
| 202 |
+
04:42.380 --> 04:47.540
|
| 203 |
+
Y ahora, ya que estamos aquí, ya que
|
| 204 |
+
tenemos la estructura de cómo vamos a
|
| 205 |
+
|
| 206 |
+
04:47.540 --> 04:52.700
|
| 207 |
+
estar haciendo las las los request de HTTP,
|
| 208 |
+
vamos a empezar entonces con el
|
| 209 |
+
|
| 210 |
+
04:52.700 --> 04:58.740
|
| 211 |
+
request, que va a darle interacción a este
|
| 212 |
+
botón. Este botón lo que va a hacer
|
| 213 |
+
|
| 214 |
+
04:58.740 --> 05:03.940
|
| 215 |
+
es, al momento de dar un getContent,
|
| 216 |
+
lo que yo esperaría es que se genere ese
|
| 217 |
+
|
| 218 |
+
05:03.940 --> 05:08.220
|
| 219 |
+
request en el servidor y me traiga la
|
| 220 |
+
información, que es lo que estuvimos
|
| 221 |
+
|
| 222 |
+
05:08.220 --> 05:12.420
|
| 223 |
+
viendo. Al estar utilizando un fetch,
|
| 224 |
+
podemos imprimir en la consola como una
|
| 225 |
+
|
| 226 |
+
05:12.420 --> 05:18.060
|
| 227 |
+
respuesta. Entonces vamos acá, y vamos a
|
| 228 |
+
generar otra función,
|
| 229 |
+
|
| 230 |
+
05:18.380 --> 05:26.700
|
| 231 |
+
que se va a llamar fetchPost. Lo que
|
| 232 |
+
queremos es que nos traiga, como los
|
| 233 |
+
|
| 234 |
+
05:26.700 --> 05:32.500
|
| 235 |
+
post que utilizamos en nuestra URL. Esta
|
| 236 |
+
función no va a llevar ningún tipo de
|
| 237 |
+
|
| 238 |
+
05:32.500 --> 05:36.460
|
| 239 |
+
parámetro, porque toda la lógica va a
|
| 240 |
+
estar acá adentro. Y vamos a utilizar una
|
| 241 |
+
|
| 242 |
+
05:36.460 --> 05:44.460
|
| 243 |
+
función async, para no estar bloqueando
|
| 244 |
+
las cargas que tenemos en el navegador y
|
| 245 |
+
|
| 246 |
+
05:44.460 --> 05:47.700
|
| 247 |
+
dar una buena experiencia con relación al
|
| 248 |
+
tiempo de carga que tenga nuestra
|
| 249 |
+
|
| 250 |
+
05:47.700 --> 05:52.220
|
| 251 |
+
aplicación. Entonces estamos aquí, lo que
|
| 252 |
+
vamos a hacer ahora es generar una
|
| 253 |
+
|
| 254 |
+
05:52.220 --> 06:03.780
|
| 255 |
+
constante que se va a llamar responseData,
|
| 256 |
+
que va a ser igual a await
|
| 257 |
+
|
| 258 |
+
06:03.780 --> 06:08.100
|
| 259 |
+
de esta función. Aquí es donde vamos a
|
| 260 |
+
hacer nosotros como el fetch,
|
| 261 |
+
|
| 262 |
+
06:08.100 --> 06:14.020
|
| 263 |
+
prácticamente. Entonces para eso le
|
| 264 |
+
ponemos sendHttpRequest, como si
|
| 265 |
+
|
| 266 |
+
06:14.020 --> 06:20.260
|
| 267 |
+
hiciéramos un fetch, pero este es como
|
| 268 |
+
nuestro fetch. Y aquí vamos a ponerle el
|
| 269 |
+
|
| 270 |
+
06:20.260 --> 06:26.900
|
| 271 |
+
tipo de método. Queremos que hagas un get,
|
| 272 |
+
|
| 273 |
+
06:26.900 --> 06:32.620
|
| 274 |
+
que como te comento, fetch por default
|
| 275 |
+
siempre va a ser un get, pero como aquí
|
| 276 |
+
|
| 277 |
+
06:32.620 --> 06:37.820
|
| 278 |
+
estamos haciendo una función que vamos a
|
| 279 |
+
reutilizar, vamos a ser específicos en
|
| 280 |
+
|
| 281 |
+
06:37.820 --> 06:41.420
|
| 282 |
+
lo que estamos buscando. Entonces queremos
|
| 283 |
+
que hagas un fetch, y queremos que el
|
| 284 |
+
|
| 285 |
+
06:41.420 --> 06:47.100
|
| 286 |
+
fetch lo hagas a la URL de que estábamos
|
| 287 |
+
utilizando, para poder traer los
|
| 288 |
+
|
| 289 |
+
06:47.100 --> 06:53.980
|
| 290 |
+
diferentes posts. Le damos un coma y vamos
|
| 291 |
+
a pegar esta URL.
|
| 292 |
+
|
| 293 |
+
06:53.980 --> 06:58.220
|
| 294 |
+
Y la URL tiene que ir con
|
| 295 |
+
comillas.
|
| 296 |
+
|
| 297 |
+
06:58.380 --> 07:02.380
|
| 298 |
+
Perfecto. Entonces de esta función, como
|
| 299 |
+
estamos haciendo nosotros un get, le
|
| 300 |
+
|
| 301 |
+
07:02.380 --> 07:07.340
|
| 302 |
+
estamos diciendo, queremos que hagas un
|
| 303 |
+
get a esta URL, haz el fetch y me
|
| 304 |
+
|
| 305 |
+
07:07.340 --> 07:12.740
|
| 306 |
+
regresas la respuesta. Super bien.
|
| 307 |
+
Entonces ya con eso, lo que yo esperaría
|
| 308 |
+
|
| 309 |
+
07:12.740 --> 07:20.260
|
| 310 |
+
que pasar aquí es un
|
| 311 |
+
console.log
|
| 312 |
+
|
| 313 |
+
07:20.260 --> 07:24.460
|
| 314 |
+
y quiero que me imprima esta respuesta.
|
| 315 |
+
Quiero que me imprima lo que nos va a
|
| 316 |
+
|
| 317 |
+
07:24.460 --> 07:30.540
|
| 318 |
+
regresar nuestra función de fetch.
|
| 319 |
+
Entonces si guardamos, solucionamos
|
| 320 |
+
|
| 321 |
+
07:30.540 --> 07:35.060
|
| 322 |
+
teType o antes de que nos quede el problema,
|
| 323 |
+
json,
|
| 324 |
+
|
| 325 |
+
07:35.060 --> 07:40.020
|
| 326 |
+
y venimos aquí a nuestro navegador, vamos
|
| 327 |
+
a nuestra consola, y lo que
|
| 328 |
+
|
| 329 |
+
07:40.020 --> 07:45.220
|
| 330 |
+
tenemos que hacer ahora es nada más mandar
|
| 331 |
+
llamar nuestra función, que se va
|
| 332 |
+
|
| 333 |
+
07:45.220 --> 07:51.900
|
| 334 |
+
a encargar de generar el request. Perfecto.
|
| 335 |
+
Nos dice que es una promesa y
|
| 336 |
+
|
| 337 |
+
07:51.900 --> 07:57.220
|
| 338 |
+
nos dice aquí, más bien ya nos trae la
|
| 339 |
+
respuesta. Por esta parte, ok, vamos
|
| 340 |
+
|
| 341 |
+
07:57.220 --> 08:01.100
|
| 342 |
+
directamente a nuestro network, que es
|
| 343 |
+
donde me interesa, porque estamos
|
| 344 |
+
|
| 345 |
+
08:01.100 --> 08:06.300
|
| 346 |
+
haciendo uso
|
| 347 |
+
de...
|
| 348 |
+
|
| 349 |
+
08:06.300 --> 08:11.780
|
| 350 |
+
Entonces aquí podemos ver que se hizo
|
| 351 |
+
nuestro request de fetch. Estamos en un
|
| 352 |
+
|
| 353 |
+
08:11.780 --> 08:18.140
|
| 354 |
+
status 200 a la URL. Entonces abrimos el post.
|
| 355 |
+
Este es el preview de lo que nos
|
| 356 |
+
|
| 357 |
+
08:18.140 --> 08:23.900
|
| 358 |
+
regresa. Cuando estemos trabajando con
|
| 359 |
+
request en APIs, esta es la pantalla
|
| 360 |
+
|
| 361 |
+
08:23.900 --> 08:27.260
|
| 362 |
+
donde tenemos que pasar nuestro mayor tiempo.
|
| 363 |
+
Por aquí es donde realmente
|
| 364 |
+
|
| 365 |
+
08:27.260 --> 08:30.900
|
| 366 |
+
podemos ver qué es lo que está pasando.
|
| 367 |
+
Si las cosas no funcionan, si las cosas
|
| 368 |
+
|
| 369 |
+
08:30.900 --> 08:34.580
|
| 370 |
+
funcionan, si el request de ahora no está
|
| 371 |
+
funcionando de la forma esperada, aquí vamos a saber
|
| 372 |
+
|
| 373 |
+
08:34.580 --> 08:40.100
|
| 374 |
+
qué es lo que está pasando. Entonces, listo,
|
| 375 |
+
con esto ya tenemos la
|
| 376 |
+
|
| 377 |
+
08:40.100 --> 08:47.140
|
| 378 |
+
información. Bien, si venimos acá, ¿qué es
|
| 379 |
+
el siguiente paso?
|
| 380 |
+
|
| 381 |
+
08:47.140 --> 08:51.300
|
| 382 |
+
El siguiente paso sería tomar esta respuesta.
|
| 383 |
+
Como podemos ver, esta respuesta
|
| 384 |
+
|
| 385 |
+
08:51.300 --> 08:56.060
|
| 386 |
+
nos regresa un arreglo de diferentes
|
| 387 |
+
objetos y de aquí tenemos que extraer
|
| 388 |
+
|
| 389 |
+
08:56.060 --> 09:00.380
|
| 390 |
+
la información para poder imprimir el título,
|
| 391 |
+
para poder imprimir el contenido.
|
| 392 |
+
|
| 393 |
+
09:00.380 --> 09:05.620
|
| 394 |
+
Nos trae por ejemplo el título y el body
|
| 395 |
+
del post y nos trae un ID. Esto es lo que
|
| 396 |
+
|
| 397 |
+
09:05.620 --> 09:10.100
|
| 398 |
+
nosotros queremos imprimir e inyectar
|
| 399 |
+
directamente en nuestro HTML con
|
| 400 |
+
|
| 401 |
+
09:10.100 --> 09:15.660
|
| 402 |
+
JavaScript. Entonces lo que yo tendría que
|
| 403 |
+
hacer ahorita sería, de inicio,
|
| 404 |
+
|
| 405 |
+
09:15.660 --> 09:21.660
|
| 406 |
+
podría generar una nueva constante para
|
| 407 |
+
mantener limpia la respuesta que me trae
|
| 408 |
+
|
| 409 |
+
09:21.660 --> 09:25.660
|
| 410 |
+
el navegador o más bien el servidor.
|
| 411 |
+
Podría generar una nueva constante que se llama
|
| 412 |
+
|
| 413 |
+
09:25.660 --> 09:33.620
|
| 414 |
+
list of posts, para ser mucho más claro,
|
| 415 |
+
que sea igual a esta respuesta. Y así yo
|
| 416 |
+
|
| 417 |
+
09:33.620 --> 09:40.060
|
| 418 |
+
no modifico esta variable. Y ahora con eso,
|
| 419 |
+
lo primero que yo tendría que hacer
|
| 420 |
+
|
| 421 |
+
09:40.060 --> 09:47.300
|
| 422 |
+
es, como me está llegando a mí un objeto,
|
| 423 |
+
me está llegando... vamos acá...
|
| 424 |
+
|
| 425 |
+
09:47.300 --> 09:51.300
|
| 426 |
+
para poderlo ver... cierro un poquito aquí...
|
| 427 |
+
|
| 428 |
+
09:51.300 --> 09:57.380
|
| 429 |
+
ok, aquí me está llegando un arreglo.
|
| 430 |
+
Si yo pongo console y mando a llamar otra
|
| 431 |
+
|
| 432 |
+
09:57.380 --> 10:03.420
|
| 433 |
+
vez mi función, me está llegando un
|
| 434 |
+
arreglo de diferentes objetos y lo que
|
| 435 |
+
|
| 436 |
+
10:03.420 --> 10:09.220
|
| 437 |
+
yo quiero hacer es imprimir cada uno de
|
| 438 |
+
estos objetos
|
| 439 |
+
|
| 440 |
+
10:09.220 --> 10:15.460
|
| 441 |
+
en mi HTTP. La forma de hacerlo es, tengo
|
| 442 |
+
que iterar, tengo que
|
| 443 |
+
|
| 444 |
+
10:15.460 --> 10:19.580
|
| 445 |
+
iterar este arreglo, para que entonces por
|
| 446 |
+
cada uno de los objetos de ese
|
| 447 |
+
|
| 448 |
+
10:19.580 --> 10:24.780
|
| 449 |
+
arreglo, yo pueda empezar a extraer la
|
| 450 |
+
información e inyectarla en el HTML.
|
| 451 |
+
|
| 452 |
+
10:24.780 --> 10:29.740
|
| 453 |
+
Entonces, yo ya tengo como cierto código
|
| 454 |
+
listo. Lo que voy a hacer es
|
| 455 |
+
|
| 456 |
+
10:29.740 --> 10:33.900
|
| 457 |
+
copiar y pegar y te lo voy a explicar en
|
| 458 |
+
este momento.
|
| 459 |
+
|
| 460 |
+
10:33.900 --> 10:38.380
|
| 461 |
+
Entonces aquí yo voy a copiar este código.
|
| 462 |
+
Este código lo estoy copiando
|
| 463 |
+
|
| 464 |
+
10:38.380 --> 10:43.580
|
| 465 |
+
porque esto es algo que tú ya sabes hacer.
|
| 466 |
+
Si tienes dudas con parte de este
|
| 467 |
+
|
| 468 |
+
10:43.580 --> 10:47.060
|
| 469 |
+
código, te recomiendo que puedas reforzar
|
| 470 |
+
tus conocimientos en el tema de
|
| 471 |
+
|
| 472 |
+
10:47.060 --> 10:51.020
|
| 473 |
+
manipulación del DOM, en la parte de crear
|
| 474 |
+
y manipular elementos con
|
| 475 |
+
|
| 476 |
+
10:51.020 --> 10:56.020
|
| 477 |
+
JavaScript. Pero vamos a ver aquí entonces
|
| 478 |
+
qué estamos haciendo. Estamos generando
|
| 479 |
+
|
| 480 |
+
10:56.020 --> 11:03.980
|
| 481 |
+
un for-off para poder iterar sobre el
|
| 482 |
+
arreglo de objetos que nos trae.
|
| 483 |
+
|
| 484 |
+
11:03.980 --> 11:08.540
|
| 485 |
+
Entonces lo que le estamos pidiendo es que
|
| 486 |
+
por cada post que venga en la lista de post,
|
| 487 |
+
|
| 488 |
+
11:08.540 --> 11:14.980
|
| 489 |
+
lo que tienes que hacer es lo siguiente.
|
| 490 |
+
Ahora, post container, aquí estamos
|
| 491 |
+
|
| 492 |
+
11:14.980 --> 11:19.940
|
| 493 |
+
generando un nuevo elemento con
|
| 494 |
+
createElement que se
|
| 495 |
+
|
| 496 |
+
11:19.940 --> 11:26.780
|
| 497 |
+
llama un article. A este nuevo elemento le
|
| 498 |
+
estamos generando un ID y una clase
|
| 499 |
+
|
| 500 |
+
11:26.780 --> 11:31.260
|
| 501 |
+
para que pueda hacer match con el CSS que
|
| 502 |
+
tenemos. De igual forma estamos
|
| 503 |
+
|
| 504 |
+
11:31.260 --> 11:36.100
|
| 505 |
+
generando un título y le estamos poniendo
|
| 506 |
+
el título con el contenido de
|
| 507 |
+
|
| 508 |
+
11:36.100 --> 11:43.020
|
| 509 |
+
texto que viene en el post, en el title.
|
| 510 |
+
Si venimos aquí a nuestro request
|
| 511 |
+
|
| 512 |
+
11:43.020 --> 11:46.860
|
| 513 |
+
y lo mandamos llamar con nuestra función,
|
| 514 |
+
|
| 515 |
+
11:46.860 --> 11:52.940
|
| 516 |
+
podemos ver un poco la estructura que nos
|
| 517 |
+
trae. Dentro de la estructura si viene el
|
| 518 |
+
|
| 519 |
+
11:52.940 --> 11:57.900
|
| 520 |
+
título, viene el título y el cuerpo.
|
| 521 |
+
Entonces también aquí estamos generando
|
| 522 |
+
|
| 523 |
+
11:57.900 --> 12:03.060
|
| 524 |
+
por ejemplo el body que va a ser
|
| 525 |
+
referencia a esta parte y estamos aquí
|
| 526 |
+
|
| 527 |
+
12:03.060 --> 12:08.020
|
| 528 |
+
poniéndole el contenido de texto con el
|
| 529 |
+
punto body que viene en este objeto.
|
| 530 |
+
|
| 531 |
+
12:08.020 --> 12:13.580
|
| 532 |
+
Estamos generando un botón y este botón va
|
| 533 |
+
a tener el texto de borrar, borrar
|
| 534 |
+
|
| 535 |
+
12:13.580 --> 12:18.020
|
| 536 |
+
contenido y aquí nada más estamos haciendo
|
| 537 |
+
un append y el append lo estamos
|
| 538 |
+
|
| 539 |
+
12:18.020 --> 12:23.660
|
| 540 |
+
haciendo a el listElement que eso hace
|
| 541 |
+
referencia a un contenedor que viene en
|
| 542 |
+
|
| 543 |
+
12:23.660 --> 12:30.900
|
| 544 |
+
nuestro HTML. Ahora lo que tenemos que
|
| 545 |
+
hacer es, tenemos que con JavaScript y
|
| 546 |
+
|
| 547 |
+
12:30.900 --> 12:33.860
|
| 548 |
+
eso lo voy a poner aquí
|
| 549 |
+
arriba.
|
| 550 |
+
|
| 551 |
+
12:33.860 --> 12:39.500
|
| 552 |
+
Perfecto, entonces aquí estamos generando
|
| 553 |
+
las variables de cada uno de
|
| 554 |
+
|
| 555 |
+
12:39.500 --> 12:43.100
|
| 556 |
+
nuestros elementos y con JavaScript los
|
| 557 |
+
estamos seleccionando para poderlos
|
| 558 |
+
|
| 559 |
+
12:43.100 --> 12:48.460
|
| 560 |
+
guardar. Entonces aquí teníamos el
|
| 561 |
+
listElement que le estamos haciendo
|
| 562 |
+
|
| 563 |
+
12:48.460 --> 12:53.700
|
| 564 |
+
referencia aquí y estamos pidiendo que
|
| 565 |
+
esto que acabamos de generar lo pueda
|
| 566 |
+
|
| 567 |
+
12:53.700 --> 13:00.620
|
| 568 |
+
inyectar en un append a listElement.
|
| 569 |
+
Todo esto es parte de, por ejemplo aquí el
|
| 570 |
+
|
| 571 |
+
13:00.620 --> 13:05.380
|
| 572 |
+
body y el title lo estamos poniendo
|
| 573 |
+
prácticamente en el post container que
|
| 574 |
+
|
| 575 |
+
13:05.380 --> 13:09.580
|
| 576 |
+
es como el contenedor de una tarjeta y esa
|
| 577 |
+
tarjeta completa la estamos
|
| 578 |
+
|
| 579 |
+
13:09.580 --> 13:16.660
|
| 580 |
+
agregando a nuestra como lista de
|
| 581 |
+
elementos que si abrimos nuestro HTML
|
| 582 |
+
|
| 583 |
+
13:16.660 --> 13:20.420
|
| 584 |
+
va a ser el contenedor donde se van a guardar.
|
| 585 |
+
Super bien, entonces vamos a
|
| 586 |
+
|
| 587 |
+
13:20.420 --> 13:26.980
|
| 588 |
+
guardar esto, ¿qué nos faltaría? Nos falta
|
| 589 |
+
poder como imprimir, al momento de que yo
|
| 590 |
+
|
| 591 |
+
13:26.980 --> 13:31.860
|
| 592 |
+
haga clic en este botón, lo que yo quiero
|
| 593 |
+
que haga es que este botón haga el
|
| 594 |
+
|
| 595 |
+
13:31.860 --> 13:37.380
|
| 596 |
+
request get y cuando me traiga esa
|
| 597 |
+
información aparezca visualmente acá.
|
| 598 |
+
|
| 599 |
+
13:37.380 --> 13:42.260
|
| 600 |
+
Entonces lo que tenemos que hacer es
|
| 601 |
+
tenemos que generar esa interacción con
|
| 602 |
+
|
| 603 |
+
13:42.260 --> 13:48.340
|
| 604 |
+
JavaScript, tenemos que ponerle ese evento
|
| 605 |
+
a ese botón. Entonces ya tenemos aquí el
|
| 606 |
+
|
| 607 |
+
13:48.340 --> 13:57.940
|
| 608 |
+
botón se llama fetchButton, vamos a
|
| 609 |
+
ponerlo acá, fetchButton.asksHeavenListener
|
| 610 |
+
|
| 611 |
+
13:57.940 --> 14:03.300
|
| 612 |
+
y queremos que esto suceda con un clic.
|
| 613 |
+
|
| 614 |
+
14:04.060 --> 14:09.620
|
| 615 |
+
Perfecto y una vez que suceda el clic que
|
| 616 |
+
manda a llamar nuestra función de
|
| 617 |
+
|
| 618 |
+
14:09.620 --> 14:13.580
|
| 619 |
+
fetchPost.
|
| 620 |
+
|
| 621 |
+
14:13.580 --> 14:20.580
|
| 622 |
+
Con esto guardamos y si todo funciona al
|
| 623 |
+
momento de darle getContent
|
| 624 |
+
|
| 625 |
+
14:20.580 --> 14:24.580
|
| 626 |
+
podemos ver cómo automáticamente se
|
| 627 |
+
empiezan a cargar cada uno de nuestros
|
| 628 |
+
|
| 629 |
+
14:24.580 --> 14:44.580
|
| 630 |
+
posts.
|
| 631 |
+
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/07-app_3019584a-adf8-4ac8-80e4-de2a4c7532bc.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const listElement = document.querySelector(".posts");
|
| 2 |
+
const postTemplate = document.getElementById("single-post");
|
| 3 |
+
const form = document.querySelector("#new-post form");
|
| 4 |
+
const fetchButton = document.querySelector("#available-posts button");
|
| 5 |
+
const postList = document.querySelector("#posts-container");
|
| 6 |
+
|
| 7 |
+
function sendHTTPRequest(method, url, data) {
|
| 8 |
+
return fetch(url, {
|
| 9 |
+
method: method,
|
| 10 |
+
body: JSON.stringify(data),
|
| 11 |
+
headers: {
|
| 12 |
+
"Content-Type": "application/json",
|
| 13 |
+
},
|
| 14 |
+
}).then((response) => {
|
| 15 |
+
return response.json();
|
| 16 |
+
});
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
async function fecthPosts() {
|
| 20 |
+
const responseData = await sendHTTPRequest(
|
| 21 |
+
"GET",
|
| 22 |
+
"https://jsonplaceholder.typicode.com/posts"
|
| 23 |
+
);
|
| 24 |
+
console.log(responseData);
|
| 25 |
+
const listOfPosts = responseData;
|
| 26 |
+
|
| 27 |
+
for (const post of listOfPosts) {
|
| 28 |
+
const postContainer = document.createElement("article");
|
| 29 |
+
postContainer.id = post.id;
|
| 30 |
+
postContainer.classList.add("post-item");
|
| 31 |
+
|
| 32 |
+
const title = document.createElement("h2");
|
| 33 |
+
title.textContent = post.title;
|
| 34 |
+
|
| 35 |
+
const body = document.createElement("p");
|
| 36 |
+
body.textContent = post.body;
|
| 37 |
+
|
| 38 |
+
const button = document.createElement("button");
|
| 39 |
+
button.textContent = "DELETE Content";
|
| 40 |
+
|
| 41 |
+
postContainer.append(title);
|
| 42 |
+
postContainer.append(body);
|
| 43 |
+
postContainer.append(button);
|
| 44 |
+
|
| 45 |
+
listElement.append(postContainer);
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
fetchButton.addEventListener("click", fecthPosts);
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Envío de Datos al Servidor con JavaScript y Fetch API.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c7b7feaca53ab709cbd8eff4f49b3cfbf1d013586afcca7bfd66d23c1db7081f
|
| 3 |
+
size 74100662
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Envío de Datos al Servidor con JavaScript y Fetch API.vtt
ADDED
|
@@ -0,0 +1,696 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:02.000
|
| 4 |
+
Ya tenemos aquí nuestros
|
| 5 |
+
posts.
|
| 6 |
+
|
| 7 |
+
00:02.000 --> 00:04.000
|
| 8 |
+
Ahora, lo que queremos hacer nosotros,
|
| 9 |
+
|
| 10 |
+
00:04.000 --> 00:08.000
|
| 11 |
+
es al momento de que yo pueda llenar aquí
|
| 12 |
+
un título,
|
| 13 |
+
|
| 14 |
+
00:08.000 --> 00:11.000
|
| 15 |
+
y algo de
|
| 16 |
+
contenido,
|
| 17 |
+
|
| 18 |
+
00:11.000 --> 00:14.000
|
| 19 |
+
y pongamos post
|
| 20 |
+
content,
|
| 21 |
+
|
| 22 |
+
00:14.000 --> 00:16.000
|
| 23 |
+
esto tendría que enviar un
|
| 24 |
+
post,
|
| 25 |
+
|
| 26 |
+
00:16.000 --> 00:19.000
|
| 27 |
+
que en HTTP, los verbos de
|
| 28 |
+
HTTP,
|
| 29 |
+
|
| 30 |
+
00:19.000 --> 00:22.000
|
| 31 |
+
esto es poder enviar información
|
| 32 |
+
directamente al servidor,
|
| 33 |
+
|
| 34 |
+
00:22.000 --> 00:24.000
|
| 35 |
+
y que esta información que yo estoy
|
| 36 |
+
llenando aquí,
|
| 37 |
+
|
| 38 |
+
00:24.000 --> 00:26.000
|
| 39 |
+
realmente se
|
| 40 |
+
envíe.
|
| 41 |
+
|
| 42 |
+
00:26.000 --> 00:28.000
|
| 43 |
+
De inicio tenemos que evitar que este
|
| 44 |
+
comportamiento,
|
| 45 |
+
|
| 46 |
+
00:28.000 --> 00:30.000
|
| 47 |
+
de que se refresca la
|
| 48 |
+
página,
|
| 49 |
+
|
| 50 |
+
00:30.000 --> 00:32.000
|
| 51 |
+
cada que le doy clic,
|
| 52 |
+
suceda.
|
| 53 |
+
|
| 54 |
+
00:32.000 --> 00:34.000
|
| 55 |
+
Vamos a ir con
|
| 56 |
+
JavaScript.
|
| 57 |
+
|
| 58 |
+
00:34.000 --> 00:36.000
|
| 59 |
+
Pero también tenemos que tomar la
|
| 60 |
+
información de acá,
|
| 61 |
+
|
| 62 |
+
00:36.000 --> 00:39.000
|
| 63 |
+
guardarla, y enviarla en el request.
|
| 64 |
+
|
| 65 |
+
00:39.000 --> 00:41.000
|
| 66 |
+
Para que podamos ver
|
| 67 |
+
aquí,
|
| 68 |
+
|
| 69 |
+
00:41.000 --> 00:45.000
|
| 70 |
+
una vez que apretemos este botón de post
|
| 71 |
+
content,
|
| 72 |
+
|
| 73 |
+
00:45.000 --> 00:48.000
|
| 74 |
+
podamos ver como se hizo una petición más,
|
| 75 |
+
|
| 76 |
+
00:48.000 --> 00:51.000
|
| 77 |
+
podamos ver que esa petición está pasando
|
| 78 |
+
en post,
|
| 79 |
+
|
| 80 |
+
00:51.000 --> 00:53.000
|
| 81 |
+
y que es lo que se está
|
| 82 |
+
enviando.
|
| 83 |
+
|
| 84 |
+
00:53.000 --> 00:55.000
|
| 85 |
+
Así que, vamos para
|
| 86 |
+
allá.
|
| 87 |
+
|
| 88 |
+
00:55.000 --> 00:57.000
|
| 89 |
+
Estamos aquí en nuestro
|
| 90 |
+
JavaScript,
|
| 91 |
+
|
| 92 |
+
00:57.000 --> 01:00.000
|
| 93 |
+
y vamos a empezar con otra
|
| 94 |
+
función,
|
| 95 |
+
|
| 96 |
+
01:00.000 --> 01:04.000
|
| 97 |
+
que se va a llamar
|
| 98 |
+
createPost.
|
| 99 |
+
|
| 100 |
+
01:04.000 --> 01:06.000
|
| 101 |
+
Y va a tener dos
|
| 102 |
+
parámetros,
|
| 103 |
+
|
| 104 |
+
01:06.000 --> 01:08.000
|
| 105 |
+
que es el
|
| 106 |
+
título,
|
| 107 |
+
|
| 108 |
+
01:08.000 --> 01:11.000
|
| 109 |
+
y el
|
| 110 |
+
content.
|
| 111 |
+
|
| 112 |
+
01:11.000 --> 01:13.000
|
| 113 |
+
Perfecto.
|
| 114 |
+
|
| 115 |
+
01:13.000 --> 01:16.000
|
| 116 |
+
Estando aquí, vamos a
|
| 117 |
+
examinar,
|
| 118 |
+
|
| 119 |
+
01:16.000 --> 01:20.000
|
| 120 |
+
un poco la
|
| 121 |
+
estructura,
|
| 122 |
+
|
| 123 |
+
01:20.000 --> 01:23.000
|
| 124 |
+
de los posts que se están
|
| 125 |
+
enviando.
|
| 126 |
+
|
| 127 |
+
01:23.000 --> 01:25.000
|
| 128 |
+
Si vemos aquí el
|
| 129 |
+
response,
|
| 130 |
+
|
| 131 |
+
01:25.000 --> 01:27.000
|
| 132 |
+
que tiene que enviar el
|
| 133 |
+
título,
|
| 134 |
+
|
| 135 |
+
01:27.000 --> 01:29.000
|
| 136 |
+
vemos que tiene que enviar el cuerpo,
|
| 137 |
+
|
| 138 |
+
01:29.000 --> 01:32.000
|
| 139 |
+
que será el título, y el contenido va a
|
| 140 |
+
ser el cuerpo.
|
| 141 |
+
|
| 142 |
+
01:32.000 --> 01:35.000
|
| 143 |
+
Pero vemos aquí que viene un ID, y un User ID.
|
| 144 |
+
|
| 145 |
+
01:35.000 --> 01:38.000
|
| 146 |
+
Nosotros tendríamos que enviar un User ID,
|
| 147 |
+
|
| 148 |
+
01:38.000 --> 01:41.000
|
| 149 |
+
para poder hacer match un poco con la
|
| 150 |
+
estructura.
|
| 151 |
+
|
| 152 |
+
01:41.000 --> 01:43.000
|
| 153 |
+
Pudiéramos enviar el
|
| 154 |
+
ID,
|
| 155 |
+
|
| 156 |
+
01:43.000 --> 01:46.000
|
| 157 |
+
pero de inicio, con que nosotros creemos
|
| 158 |
+
un User ID,
|
| 159 |
+
|
| 160 |
+
01:46.000 --> 01:49.000
|
| 161 |
+
va a ser importante, para poderlo enviar,
|
| 162 |
+
|
| 163 |
+
01:49.000 --> 01:51.000
|
| 164 |
+
y que no rompa la
|
| 165 |
+
estructura,
|
| 166 |
+
|
| 167 |
+
01:51.000 --> 01:54.000
|
| 168 |
+
de lo que estaría esperando el servidor de
|
| 169 |
+
esta API.
|
| 170 |
+
|
| 171 |
+
01:54.000 --> 01:56.000
|
| 172 |
+
Para poder hacer
|
| 173 |
+
eso,
|
| 174 |
+
|
| 175 |
+
01:56.000 --> 01:59.000
|
| 176 |
+
nosotros no vamos a poder generar un
|
| 177 |
+
número distinto,
|
| 178 |
+
|
| 179 |
+
01:59.000 --> 02:02.000
|
| 180 |
+
por cada uno de los posts que se vaya
|
| 181 |
+
generando.
|
| 182 |
+
|
| 183 |
+
02:02.000 --> 02:06.000
|
| 184 |
+
Así que, voy a, de manera
|
| 185 |
+
rápida,
|
| 186 |
+
|
| 187 |
+
02:06.000 --> 02:10.000
|
| 188 |
+
generar una constante que se llame User ID,
|
| 189 |
+
|
| 190 |
+
02:10.000 --> 02:14.000
|
| 191 |
+
que va a ser igual a un match random,
|
| 192 |
+
|
| 193 |
+
02:14.000 --> 02:18.000
|
| 194 |
+
que me vaya a generar un número de manera
|
| 195 |
+
aleatoria,
|
| 196 |
+
|
| 197 |
+
02:18.000 --> 02:21.000
|
| 198 |
+
que se va a convertir en este User ID.
|
| 199 |
+
|
| 200 |
+
02:21.000 --> 02:23.000
|
| 201 |
+
Ya lo tenemos acá.
|
| 202 |
+
Perfecto.
|
| 203 |
+
|
| 204 |
+
02:23.000 --> 02:26.000
|
| 205 |
+
Entonces, aquí tenemos que hacer esa
|
| 206 |
+
pequeña estructura,
|
| 207 |
+
|
| 208 |
+
02:26.000 --> 02:28.000
|
| 209 |
+
ese pequeño objeto que vamos a enviar,
|
| 210 |
+
|
| 211 |
+
02:28.000 --> 02:30.000
|
| 212 |
+
y se va a llamar
|
| 213 |
+
post.
|
| 214 |
+
|
| 215 |
+
02:30.000 --> 02:32.000
|
| 216 |
+
Este es el post que vamos a estar enviando.
|
| 217 |
+
|
| 218 |
+
02:32.000 --> 02:34.000
|
| 219 |
+
El post va a tener un
|
| 220 |
+
title,
|
| 221 |
+
|
| 222 |
+
02:34.000 --> 02:36.000
|
| 223 |
+
que va a ser igual al
|
| 224 |
+
title,
|
| 225 |
+
|
| 226 |
+
02:36.000 --> 02:41.000
|
| 227 |
+
que va a venir prácticamente de lo que
|
| 228 |
+
obtengamos
|
| 229 |
+
|
| 230 |
+
02:41.000 --> 02:44.000
|
| 231 |
+
de nuestro input, pero se va a inyectar aquí,
|
| 232 |
+
|
| 233 |
+
02:44.000 --> 02:46.000
|
| 234 |
+
en nuestra
|
| 235 |
+
función.
|
| 236 |
+
|
| 237 |
+
02:46.000 --> 02:48.000
|
| 238 |
+
Vamos a tener un
|
| 239 |
+
body,
|
| 240 |
+
|
| 241 |
+
02:48.000 --> 02:52.000
|
| 242 |
+
que va a ser referencia al
|
| 243 |
+
content,
|
| 244 |
+
|
| 245 |
+
02:52.000 --> 02:56.000
|
| 246 |
+
que estamos nosotros utilizando aquí en
|
| 247 |
+
nuestra función,
|
| 248 |
+
|
| 249 |
+
02:56.000 --> 02:59.000
|
| 250 |
+
como parámetro, y el User
|
| 251 |
+
ID,
|
| 252 |
+
|
| 253 |
+
02:59.000 --> 03:02.000
|
| 254 |
+
que se está generando de manera aleatoria,
|
| 255 |
+
|
| 256 |
+
03:02.000 --> 03:04.000
|
| 257 |
+
con un match
|
| 258 |
+
random.
|
| 259 |
+
|
| 260 |
+
03:04.000 --> 03:06.000
|
| 261 |
+
User ID.
|
| 262 |
+
Perfecto.
|
| 263 |
+
|
| 264 |
+
03:06.000 --> 03:08.000
|
| 265 |
+
Entonces, teniendo
|
| 266 |
+
eso,
|
| 267 |
+
|
| 268 |
+
03:08.000 --> 03:10.000
|
| 269 |
+
tenemos la pequeña
|
| 270 |
+
estructura
|
| 271 |
+
|
| 272 |
+
03:10.000 --> 03:13.000
|
| 273 |
+
de lo que se va a enviar al servidor.
|
| 274 |
+
|
| 275 |
+
03:13.000 --> 03:15.000
|
| 276 |
+
¿Qué nos
|
| 277 |
+
falta?
|
| 278 |
+
|
| 279 |
+
03:15.000 --> 03:18.000
|
| 280 |
+
Esta función vamos a hacerla
|
| 281 |
+
async.
|
| 282 |
+
|
| 283 |
+
03:18.000 --> 03:20.000
|
| 284 |
+
Muy
|
| 285 |
+
bien.
|
| 286 |
+
|
| 287 |
+
03:20.000 --> 03:22.000
|
| 288 |
+
Entonces, ahora,
|
| 289 |
+
aquí,
|
| 290 |
+
|
| 291 |
+
03:22.000 --> 03:24.000
|
| 292 |
+
tenemos que hacer ese
|
| 293 |
+
request.
|
| 294 |
+
|
| 295 |
+
03:24.000 --> 03:26.000
|
| 296 |
+
Y para poder hacer ese
|
| 297 |
+
request,
|
| 298 |
+
|
| 299 |
+
03:26.000 --> 03:29.000
|
| 300 |
+
vamos a mandar llamar nuestra
|
| 301 |
+
función
|
| 302 |
+
|
| 303 |
+
03:31.000 --> 03:34.000
|
| 304 |
+
para que se genere el
|
| 305 |
+
fetch.
|
| 306 |
+
|
| 307 |
+
03:35.000 --> 03:38.000
|
| 308 |
+
Entonces, aquí, ponemos esta función.
|
| 309 |
+
|
| 310 |
+
03:38.000 --> 03:43.000
|
| 311 |
+
El método, aquí le vamos a pedir que ahora
|
| 312 |
+
sea un post.
|
| 313 |
+
|
| 314 |
+
03:43.000 --> 03:47.000
|
| 315 |
+
Ese va a ser el método que vamos a estar
|
| 316 |
+
utilizando.
|
| 317 |
+
|
| 318 |
+
03:47.000 --> 03:50.000
|
| 319 |
+
La URL va a ser la misma
|
| 320 |
+
URL
|
| 321 |
+
|
| 322 |
+
03:50.000 --> 03:53.000
|
| 323 |
+
que estamos utilizando para ese ejercicio.
|
| 324 |
+
|
| 325 |
+
03:53.000 --> 03:56.000
|
| 326 |
+
Entonces, vamos a utilizar esta misma
|
| 327 |
+
URL
|
| 328 |
+
|
| 329 |
+
03:56.000 --> 03:59.000
|
| 330 |
+
para que pueda enviar un
|
| 331 |
+
post.
|
| 332 |
+
|
| 333 |
+
03:59.000 --> 04:02.000
|
| 334 |
+
Entonces, aquí ponemos, y tenemos la misma
|
| 335 |
+
URL.
|
| 336 |
+
|
| 337 |
+
04:02.000 --> 04:04.000
|
| 338 |
+
Y los datos que vamos a
|
| 339 |
+
enviar,
|
| 340 |
+
|
| 341 |
+
04:04.000 --> 04:07.000
|
| 342 |
+
porque en este caso, como estamos enviando
|
| 343 |
+
un post,
|
| 344 |
+
|
| 345 |
+
04:07.000 --> 04:09.000
|
| 346 |
+
sí tiene que ir un
|
| 347 |
+
body,
|
| 348 |
+
|
| 349 |
+
04:09.000 --> 04:12.000
|
| 350 |
+
porque el body habla de la información que
|
| 351 |
+
estamos enviando.
|
| 352 |
+
|
| 353 |
+
04:12.000 --> 04:14.000
|
| 354 |
+
En este caso, va a ser
|
| 355 |
+
post.
|
| 356 |
+
|
| 357 |
+
04:14.000 --> 04:17.000
|
| 358 |
+
Esta es la información que nosotros vamos
|
| 359 |
+
a enviar.
|
| 360 |
+
|
| 361 |
+
04:18.000 --> 04:19.000
|
| 362 |
+
Perfecto.
|
| 363 |
+
|
| 364 |
+
04:19.000 --> 04:21.000
|
| 365 |
+
Entonces, con esto ya tenemos la
|
| 366 |
+
estructura
|
| 367 |
+
|
| 368 |
+
04:21.000 --> 04:24.000
|
| 369 |
+
de la función que va a estar enviando el
|
| 370 |
+
request
|
| 371 |
+
|
| 372 |
+
04:24.000 --> 04:28.000
|
| 373 |
+
con la información para poder generar un
|
| 374 |
+
nuevo blog post.
|
| 375 |
+
|
| 376 |
+
04:28.000 --> 04:29.000
|
| 377 |
+
¿Qué nos
|
| 378 |
+
faltaría?
|
| 379 |
+
|
| 380 |
+
04:29.000 --> 04:34.000
|
| 381 |
+
Nos falta ahora generar el evento en este
|
| 382 |
+
botón.
|
| 383 |
+
|
| 384 |
+
04:34.000 --> 04:38.000
|
| 385 |
+
Entonces, este botón se llama, vamos a
|
| 386 |
+
ponerlo aquí,
|
| 387 |
+
|
| 388 |
+
04:38.000 --> 04:40.000
|
| 389 |
+
lo tenemos por
|
| 390 |
+
acá.
|
| 391 |
+
|
| 392 |
+
04:41.000 --> 04:43.000
|
| 393 |
+
Entonces, está aquí, es el
|
| 394 |
+
form.
|
| 395 |
+
|
| 396 |
+
04:43.000 --> 04:45.000
|
| 397 |
+
Vamos a estar utilizando el
|
| 398 |
+
form.
|
| 399 |
+
|
| 400 |
+
04:45.000 --> 04:47.000
|
| 401 |
+
Podemos ver que la estructura es un new post,
|
| 402 |
+
|
| 403 |
+
04:47.000 --> 04:51.000
|
| 404 |
+
que es el contenedor en donde existe el form.
|
| 405 |
+
|
| 406 |
+
04:51.000 --> 04:54.000
|
| 407 |
+
Y al form le vamos a agregar el evento de
|
| 408 |
+
submit
|
| 409 |
+
|
| 410 |
+
04:54.000 --> 04:56.000
|
| 411 |
+
para que se pueda enviar la
|
| 412 |
+
información
|
| 413 |
+
|
| 414 |
+
04:56.000 --> 04:58.000
|
| 415 |
+
que tienen estos dos
|
| 416 |
+
inputs.
|
| 417 |
+
|
| 418 |
+
04:58.000 --> 05:01.000
|
| 419 |
+
Y aquí al momento de darle click en este
|
| 420 |
+
botón,
|
| 421 |
+
|
| 422 |
+
05:01.000 --> 05:03.000
|
| 423 |
+
que tiene el tipo de
|
| 424 |
+
submit,
|
| 425 |
+
|
| 426 |
+
05:03.000 --> 05:05.000
|
| 427 |
+
que es el que como genera este trigger,
|
| 428 |
+
|
| 429 |
+
05:05.000 --> 05:08.000
|
| 430 |
+
tenemos que quitar este comportamiento.
|
| 431 |
+
|
| 432 |
+
05:08.000 --> 05:10.000
|
| 433 |
+
Así que lo primero que vamos a hacer es,
|
| 434 |
+
|
| 435 |
+
05:10.000 --> 05:19.000
|
| 436 |
+
vamos a venir aquí y vamos a ocupar el form.
|
| 437 |
+
addEventListener
|
| 438 |
+
|
| 439 |
+
05:20.000 --> 05:24.000
|
| 440 |
+
y vamos a decir que el evento que queremos
|
| 441 |
+
nosotros escuchar
|
| 442 |
+
|
| 443 |
+
05:24.000 --> 05:26.000
|
| 444 |
+
es un
|
| 445 |
+
submit.
|
| 446 |
+
|
| 447 |
+
05:28.000 --> 05:31.000
|
| 448 |
+
Y queremos que nos traiga el evento mismo.
|
| 449 |
+
|
| 450 |
+
05:33.000 --> 05:34.000
|
| 451 |
+
¿Para
|
| 452 |
+
qué?
|
| 453 |
+
|
| 454 |
+
05:34.000 --> 05:37.000
|
| 455 |
+
Una, para poder prevenir este
|
| 456 |
+
comportamiento que tiene.
|
| 457 |
+
|
| 458 |
+
05:37.000 --> 05:45.000
|
| 459 |
+
Entonces vamos
|
| 460 |
+
event.preventDefault
|
| 461 |
+
|
| 462 |
+
05:46.000 --> 05:51.000
|
| 463 |
+
y dos, para poder tener acceso a los
|
| 464 |
+
elementos
|
| 465 |
+
|
| 466 |
+
05:51.000 --> 05:53.000
|
| 467 |
+
que tiene el
|
| 468 |
+
formulario,
|
| 469 |
+
|
| 470 |
+
05:53.000 --> 05:56.000
|
| 471 |
+
para poder tener estos dos
|
| 472 |
+
valores.
|
| 473 |
+
|
| 474 |
+
05:56.000 --> 05:59.000
|
| 475 |
+
Entonces ahorita ya le estoy dando click
|
| 476 |
+
al botón
|
| 477 |
+
|
| 478 |
+
05:59.000 --> 06:01.000
|
| 479 |
+
y podemos ver que ya no se reinicia la página,
|
| 480 |
+
|
| 481 |
+
06:01.000 --> 06:04.000
|
| 482 |
+
así que ya ese comportamiento se está
|
| 483 |
+
erradicando.
|
| 484 |
+
|
| 485 |
+
06:04.000 --> 06:07.000
|
| 486 |
+
Ahora vamos a tomar el valor de estos dos
|
| 487 |
+
inputs.
|
| 488 |
+
|
| 489 |
+
06:07.000 --> 06:10.000
|
| 490 |
+
Entonces la forma de hacerlo es genero una
|
| 491 |
+
constante
|
| 492 |
+
|
| 493 |
+
06:10.000 --> 06:26.000
|
| 494 |
+
que se llame title igual a
|
| 495 |
+
event.currentTarget.querySelector
|
| 496 |
+
|
| 497 |
+
06:26.000 --> 06:33.000
|
| 498 |
+
y quiero que busque si ese target actual,
|
| 499 |
+
|
| 500 |
+
06:33.000 --> 06:35.000
|
| 501 |
+
que tiene que venir en
|
| 502 |
+
comillas,
|
| 503 |
+
|
| 504 |
+
06:37.000 --> 06:40.000
|
| 505 |
+
tenga el ID de
|
| 506 |
+
title.
|
| 507 |
+
|
| 508 |
+
06:42.000 --> 06:45.000
|
| 509 |
+
Y si sí, quiero que me traiga el value.
|
| 510 |
+
|
| 511 |
+
06:46.000 --> 06:47.000
|
| 512 |
+
Perfecto.
|
| 513 |
+
|
| 514 |
+
06:48.000 --> 06:50.000
|
| 515 |
+
Entonces vamos a hacer lo mismo con el body.
|
| 516 |
+
|
| 517 |
+
06:50.000 --> 07:04.000
|
| 518 |
+
Const se va a llamar content igual a event.
|
| 519 |
+
currentTarget.querySelector
|
| 520 |
+
|
| 521 |
+
07:04.000 --> 07:05.000
|
| 522 |
+
y lo
|
| 523 |
+
mismo.
|
| 524 |
+
|
| 525 |
+
07:05.000 --> 07:11.000
|
| 526 |
+
Este tiene que tener un ID que se llame
|
| 527 |
+
content.
|
| 528 |
+
|
| 529 |
+
07:11.000 --> 07:19.000
|
| 530 |
+
Muy bien, si venimos acá, aquí tenemos el
|
| 531 |
+
document.
|
| 532 |
+
|
| 533 |
+
07:21.000 --> 07:23.000
|
| 534 |
+
Vamos a darle un poquito más de espacio.
|
| 535 |
+
|
| 536 |
+
07:24.000 --> 07:27.000
|
| 537 |
+
Venimos al body, venimos a este section
|
| 538 |
+
new posts,
|
| 539 |
+
|
| 540 |
+
07:27.000 --> 07:29.000
|
| 541 |
+
el new posts trae el
|
| 542 |
+
formulario.
|
| 543 |
+
|
| 544 |
+
07:29.000 --> 07:36.000
|
| 545 |
+
Entonces aquí tiene que venir un input con
|
| 546 |
+
título
|
| 547 |
+
|
| 548 |
+
07:36.000 --> 07:39.000
|
| 549 |
+
y aquí un input con
|
| 550 |
+
content.
|
| 551 |
+
|
| 552 |
+
07:39.000 --> 07:44.000
|
| 553 |
+
Y estamos haciendo como el target
|
| 554 |
+
actual
|
| 555 |
+
|
| 556 |
+
07:44.000 --> 07:51.000
|
| 557 |
+
para hacerle selección a, aquí nos falta
|
| 558 |
+
el punto value,
|
| 559 |
+
|
| 560 |
+
07:51.000 --> 07:54.000
|
| 561 |
+
para que nos pueda traer el valor del
|
| 562 |
+
target actual
|
| 563 |
+
|
| 564 |
+
07:54.000 --> 08:01.000
|
| 565 |
+
que tenga un ID que haga match con los ID
|
| 566 |
+
que estamos nosotros seleccionando en este momento.
|
| 567 |
+
|
| 568 |
+
08:01.000 --> 08:04.000
|
| 569 |
+
Entonces si guardamos, aquí ya tenemos dos
|
| 570 |
+
constantes
|
| 571 |
+
|
| 572 |
+
08:04.000 --> 08:09.000
|
| 573 |
+
que van a ser las dos constantes de estos
|
| 574 |
+
dos inputs
|
| 575 |
+
|
| 576 |
+
08:09.000 --> 08:12.000
|
| 577 |
+
que nos tiene que traer el texto que
|
| 578 |
+
nosotros escribamos.
|
| 579 |
+
|
| 580 |
+
08:13.000 --> 08:18.000
|
| 581 |
+
Si en este momento pongo un console.
|
| 582 |
+
log, por ejemplo,
|
| 583 |
+
|
| 584 |
+
08:18.000 --> 08:26.000
|
| 585 |
+
y hago title,
|
| 586 |
+
contents,
|
| 587 |
+
|
| 588 |
+
08:26.000 --> 08:36.000
|
| 589 |
+
aquí pongo título y contenido y le doy enter.
|
| 590 |
+
|
| 591 |
+
08:37.000 --> 08:44.000
|
| 592 |
+
Aquí nos dice que hay un typo en la línea
|
| 593 |
+
64 con el query selector.
|
| 594 |
+
|
| 595 |
+
08:44.000 --> 08:51.000
|
| 596 |
+
Si venimos en la línea 64, target, podemos
|
| 597 |
+
guardar.
|
| 598 |
+
|
| 599 |
+
08:51.000 --> 09:01.000
|
| 600 |
+
Hacemos lo mismo, título, contenido,
|
| 601 |
+
post y listo, nos trae título y contenido.
|
| 602 |
+
|
| 603 |
+
09:01.000 --> 09:05.000
|
| 604 |
+
Entonces a este momento ya tenemos el
|
| 605 |
+
valor de nuestros inputs.
|
| 606 |
+
|
| 607 |
+
09:05.000 --> 09:07.000
|
| 608 |
+
¿Qué es lo que nos
|
| 609 |
+
falta?
|
| 610 |
+
|
| 611 |
+
09:07.000 --> 09:11.000
|
| 612 |
+
Nos falta simplemente mandar llamar
|
| 613 |
+
nuestra función.
|
| 614 |
+
|
| 615 |
+
09:11.000 --> 09:14.000
|
| 616 |
+
Al momento de que se genere el submits,
|
| 617 |
+
|
| 618 |
+
09:14.000 --> 09:18.000
|
| 619 |
+
lo que queremos es que en esta función
|
| 620 |
+
pueda venir el título
|
| 621 |
+
|
| 622 |
+
09:18.000 --> 09:22.000
|
| 623 |
+
y pueda venir el contenido que hace
|
| 624 |
+
relación o referencia
|
| 625 |
+
|
| 626 |
+
09:22.000 --> 09:25.000
|
| 627 |
+
a estas dos variables que tenemos aquí.
|
| 628 |
+
|
| 629 |
+
09:25.000 --> 09:28.000
|
| 630 |
+
Es perfecto, vamos a
|
| 631 |
+
guardar.
|
| 632 |
+
|
| 633 |
+
09:28.000 --> 09:34.000
|
| 634 |
+
Y aquí si guardamos, podemos venir a
|
| 635 |
+
networking, network.
|
| 636 |
+
|
| 637 |
+
09:36.000 --> 09:38.000
|
| 638 |
+
Bien, vamos a darle un poco más de espacio
|
| 639 |
+
a esto
|
| 640 |
+
|
| 641 |
+
09:38.000 --> 09:41.000
|
| 642 |
+
para poder ver bien que es lo que va a pasar.
|
| 643 |
+
|
| 644 |
+
09:42.000 --> 09:46.000
|
| 645 |
+
Entonces aquí podemos ver que todavía no
|
| 646 |
+
existe un post.
|
| 647 |
+
|
| 648 |
+
09:46.000 --> 09:53.000
|
| 649 |
+
Si ponemos aquí título, contenido y enviamos,
|
| 650 |
+
|
| 651 |
+
09:54.000 --> 09:56.000
|
| 652 |
+
podemos ver cómo aquí aparece este post.
|
| 653 |
+
|
| 654 |
+
09:56.000 --> 10:00.000
|
| 655 |
+
Y dice que el método que se ocupó fue un
|
| 656 |
+
método de post,
|
| 657 |
+
|
| 658 |
+
10:00.000 --> 10:07.000
|
| 659 |
+
un 201, perfecto, que fue creado, y al
|
| 660 |
+
dominio, y se utilizó un fetch.
|
| 661 |
+
|
| 662 |
+
10:07.000 --> 10:11.000
|
| 663 |
+
Si abrimos este post, podemos ver qué es
|
| 664 |
+
lo que se envió.
|
| 665 |
+
|
| 666 |
+
10:11.000 --> 10:15.000
|
| 667 |
+
Se envió el título, se envió el body,
|
| 668 |
+
que es el contenido,
|
| 669 |
+
|
| 670 |
+
10:15.000 --> 10:18.000
|
| 671 |
+
el user ID, que es un mat random generado,
|
| 672 |
+
|
| 673 |
+
10:18.000 --> 10:23.000
|
| 674 |
+
aquí podríamos cambiar un poco para
|
| 675 |
+
redondearlo a números enteros,
|
| 676 |
+
|
| 677 |
+
10:23.000 --> 10:26.000
|
| 678 |
+
pero se está enviando un user
|
| 679 |
+
ID.
|
| 680 |
+
|
| 681 |
+
10:26.000 --> 10:29.000
|
| 682 |
+
Y si vamos al header, podemos ver que se
|
| 683 |
+
está utilizando
|
| 684 |
+
|
| 685 |
+
10:29.000 --> 10:32.000
|
| 686 |
+
el método post a la URL que nosotros
|
| 687 |
+
estamos buscando,
|
| 688 |
+
|
| 689 |
+
10:32.000 --> 10:36.000
|
| 690 |
+
el status que se está generando, y con
|
| 691 |
+
esto ya estamos viendo
|
| 692 |
+
|
| 693 |
+
10:36.000 --> 10:46.000
|
| 694 |
+
qué es lo que se envió al
|
| 695 |
+
servidor.
|
| 696 |
+
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/08-app_6a7338a5-f4d8-42bf-8732-2ca120df4082.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const listElement = document.querySelector(".posts");
|
| 2 |
+
const postTemplate = document.getElementById("single-post");
|
| 3 |
+
const form = document.querySelector("#new-post form");
|
| 4 |
+
const fetchButton = document.querySelector("#available-posts button");
|
| 5 |
+
const postList = document.querySelector("#posts-container");
|
| 6 |
+
|
| 7 |
+
function sendHTTPRequest(method, url, data) {
|
| 8 |
+
return fetch(url, {
|
| 9 |
+
method: method,
|
| 10 |
+
body: JSON.stringify(data),
|
| 11 |
+
headers: {
|
| 12 |
+
"Content-Type": "application/json",
|
| 13 |
+
},
|
| 14 |
+
}).then((response) => {
|
| 15 |
+
return response.json();
|
| 16 |
+
});
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
async function fecthPosts() {
|
| 20 |
+
const responseData = await sendHTTPRequest(
|
| 21 |
+
"GET",
|
| 22 |
+
"https://jsonplaceholder.typicode.com/posts"
|
| 23 |
+
);
|
| 24 |
+
console.log(responseData);
|
| 25 |
+
const listOfPosts = responseData;
|
| 26 |
+
|
| 27 |
+
for (const post of listOfPosts) {
|
| 28 |
+
const postContainer = document.createElement("article");
|
| 29 |
+
postContainer.id = post.id;
|
| 30 |
+
postContainer.classList.add("post-item");
|
| 31 |
+
|
| 32 |
+
const title = document.createElement("h2");
|
| 33 |
+
title.textContent = post.title;
|
| 34 |
+
|
| 35 |
+
const body = document.createElement("p");
|
| 36 |
+
body.textContent = post.body;
|
| 37 |
+
|
| 38 |
+
const button = document.createElement("button");
|
| 39 |
+
button.textContent = "DELETE Content";
|
| 40 |
+
|
| 41 |
+
postContainer.append(title);
|
| 42 |
+
postContainer.append(body);
|
| 43 |
+
postContainer.append(button);
|
| 44 |
+
|
| 45 |
+
listElement.append(postContainer);
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
fetchButton.addEventListener("click", fecthPosts);
|
| 50 |
+
|
| 51 |
+
async function createPost(title, content) {
|
| 52 |
+
const userId = Math.random();
|
| 53 |
+
const post = {
|
| 54 |
+
title: title,
|
| 55 |
+
body: content,
|
| 56 |
+
userId: userId,
|
| 57 |
+
};
|
| 58 |
+
|
| 59 |
+
sendHTTPRequest("POST", "https://jsonplaceholder.typicode.com/posts", post);
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
form.addEventListener("submit", (event) => {
|
| 63 |
+
event.preventDefault();
|
| 64 |
+
const title = event.currentTarget.querySelector("#title").value;
|
| 65 |
+
const content = event.currentTarget.querySelector("#content").value;
|
| 66 |
+
|
| 67 |
+
createPost(title, content);
|
| 68 |
+
});
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Eliminar Posts con JavaScript y Delegación de Eventos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cc966d0b38dc865d552be69fa404107192a7b027a312a921cf4041243156c968
|
| 3 |
+
size 76987898
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Eliminar Posts con JavaScript y Delegación de Eventos.vtt
ADDED
|
@@ -0,0 +1,745 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:03.000
|
| 4 |
+
¿Qué pasaría entonces ahora si, por ejemplo,
|
| 5 |
+
|
| 6 |
+
00:03.000 --> 00:07.800
|
| 7 |
+
mandamos llamar nuestros posts y lo que
|
| 8 |
+
queremos es borrarlos?
|
| 9 |
+
|
| 10 |
+
00:07.800 --> 00:08.300
|
| 11 |
+
¿No?
|
| 12 |
+
|
| 13 |
+
00:08.300 --> 00:11.200
|
| 14 |
+
O queremos enviar una petición para
|
| 15 |
+
poderle decir al servidor,
|
| 16 |
+
|
| 17 |
+
00:11.200 --> 00:15.400
|
| 18 |
+
oye, este elemento quiero que lo borres de
|
| 19 |
+
la base de datos y
|
| 20 |
+
|
| 21 |
+
00:15.400 --> 00:18.360
|
| 22 |
+
ya no quiero traerlo cuando quede una
|
| 23 |
+
petición.
|
| 24 |
+
|
| 25 |
+
00:18.360 --> 00:21.840
|
| 26 |
+
Tenemos que darle interacción ahorita a
|
| 27 |
+
este botón para poder
|
| 28 |
+
|
| 29 |
+
00:21.840 --> 00:23.360
|
| 30 |
+
borrar los
|
| 31 |
+
elementos.
|
| 32 |
+
|
| 33 |
+
00:23.360 --> 00:26.200
|
| 34 |
+
Pero poder borrar los elementos es un poco
|
| 35 |
+
más complejo que
|
| 36 |
+
|
| 37 |
+
00:26.200 --> 00:29.840
|
| 38 |
+
solo decirle a este botón, borra este
|
| 39 |
+
elemento.
|
| 40 |
+
|
| 41 |
+
00:29.840 --> 00:31.520
|
| 42 |
+
No funciona tanto
|
| 43 |
+
así.
|
| 44 |
+
|
| 45 |
+
00:31.520 --> 00:35.160
|
| 46 |
+
Aquí vamos a estar utilizando algunos
|
| 47 |
+
elementos.
|
| 48 |
+
|
| 49 |
+
00:35.160 --> 00:38.520
|
| 50 |
+
Lo primero es que no le vamos a agregar el
|
| 51 |
+
evento al botón.
|
| 52 |
+
|
| 53 |
+
00:38.520 --> 00:41.640
|
| 54 |
+
Vamos a utilizar un patrón que se llama
|
| 55 |
+
delegation pattern,
|
| 56 |
+
|
| 57 |
+
00:41.640 --> 00:46.080
|
| 58 |
+
que es vamos a agregarle el evento al
|
| 59 |
+
padre de las
|
| 60 |
+
|
| 61 |
+
00:46.080 --> 00:49.600
|
| 62 |
+
tarjetas para que el padre de las tarjetas
|
| 63 |
+
sea el que nos
|
| 64 |
+
|
| 65 |
+
00:49.600 --> 00:53.160
|
| 66 |
+
diga a quién le estamos dando clic y quién
|
| 67 |
+
se tiene que ir.
|
| 68 |
+
|
| 69 |
+
00:53.160 --> 00:55.920
|
| 70 |
+
Esto nos va a ayudar muchísimo en temas de
|
| 71 |
+
performance.
|
| 72 |
+
|
| 73 |
+
00:55.920 --> 00:59.960
|
| 74 |
+
Pero también tenemos que entender cuál es
|
| 75 |
+
el ID que
|
| 76 |
+
|
| 77 |
+
00:59.960 --> 01:01.120
|
| 78 |
+
tenemos que
|
| 79 |
+
borrar.
|
| 80 |
+
|
| 81 |
+
01:01.120 --> 01:05.520
|
| 82 |
+
Porque no solo es saber qué tipo de o cuál
|
| 83 |
+
de las etiquetas de
|
| 84 |
+
|
| 85 |
+
01:05.520 --> 01:09.400
|
| 86 |
+
HTML le estamos dando clic, es si venimos
|
| 87 |
+
aquí, por ejemplo,
|
| 88 |
+
|
| 89 |
+
01:09.400 --> 01:12.880
|
| 90 |
+
hagamos esto un poco grande, demos espacio,
|
| 91 |
+
|
| 92 |
+
01:12.880 --> 01:17.080
|
| 93 |
+
venimos a nuestros posts, nosotros
|
| 94 |
+
necesitamos entender
|
| 95 |
+
|
| 96 |
+
01:17.080 --> 01:19.160
|
| 97 |
+
cuál es el ID del
|
| 98 |
+
elemento.
|
| 99 |
+
|
| 100 |
+
01:19.160 --> 01:23.040
|
| 101 |
+
Si te das cuenta, cada elemento tiene un
|
| 102 |
+
ID distinto.
|
| 103 |
+
|
| 104 |
+
01:23.040 --> 01:25.240
|
| 105 |
+
Entonces, nosotros tenemos que encontrar
|
| 106 |
+
una forma de al
|
| 107 |
+
|
| 108 |
+
01:25.240 --> 01:28.480
|
| 109 |
+
momento de darle clic con el delegation
|
| 110 |
+
pattern,
|
| 111 |
+
|
| 112 |
+
01:28.480 --> 01:33.520
|
| 113 |
+
sepamos cuál es el ID del elemento al que
|
| 114 |
+
le dimos clic
|
| 115 |
+
|
| 116 |
+
01:33.520 --> 01:38.000
|
| 117 |
+
para poderle decir al servidor en la
|
| 118 |
+
petición de deletes que
|
| 119 |
+
|
| 120 |
+
01:38.000 --> 01:40.080
|
| 121 |
+
vamos a hacer con HTTP,
|
| 122 |
+
oye,
|
| 123 |
+
|
| 124 |
+
01:40.080 --> 01:44.520
|
| 125 |
+
necesito que busques el elemento que tiene
|
| 126 |
+
este ID y que lo
|
| 127 |
+
|
| 128 |
+
01:44.520 --> 01:45.840
|
| 129 |
+
borres.
|
| 130 |
+
|
| 131 |
+
01:45.840 --> 01:48.080
|
| 132 |
+
Así que vamos para
|
| 133 |
+
allá.
|
| 134 |
+
|
| 135 |
+
01:48.080 --> 01:50.920
|
| 136 |
+
Con esto pequeño, venimos aquí a nuestro
|
| 137 |
+
JavaScript.
|
| 138 |
+
|
| 139 |
+
01:50.920 --> 01:53.160
|
| 140 |
+
Y ya que estamos acá, pues, como comenté,
|
| 141 |
+
|
| 142 |
+
01:53.160 --> 01:55.320
|
| 143 |
+
hay que empezar con el
|
| 144 |
+
evento.
|
| 145 |
+
|
| 146 |
+
01:55.320 --> 02:01.480
|
| 147 |
+
Y el evento va a estar pasando en el padre
|
| 148 |
+
que tiene todas las
|
| 149 |
+
|
| 150 |
+
02:01.480 --> 02:04.400
|
| 151 |
+
tarjetas, que tiene todas estas tarjetas.
|
| 152 |
+
|
| 153 |
+
02:04.400 --> 02:09.480
|
| 154 |
+
Y ese padre, venimos aquí, lo tenemos acá.
|
| 155 |
+
|
| 156 |
+
02:09.480 --> 02:14.000
|
| 157 |
+
Este padre está en el section que tiene un
|
| 158 |
+
ID que se llama
|
| 159 |
+
|
| 160 |
+
02:14.000 --> 02:16.120
|
| 161 |
+
post
|
| 162 |
+
container.
|
| 163 |
+
|
| 164 |
+
02:16.120 --> 02:17.800
|
| 165 |
+
Eso ya lo tenemos acá
|
| 166 |
+
guardado.
|
| 167 |
+
|
| 168 |
+
02:17.800 --> 02:21.840
|
| 169 |
+
Lo tenemos por aquí, post container,
|
| 170 |
+
se llama post list.
|
| 171 |
+
|
| 172 |
+
02:21.840 --> 02:24.120
|
| 173 |
+
Entonces, a este elemento es el que le
|
| 174 |
+
vamos a agregar ese
|
| 175 |
+
|
| 176 |
+
02:24.120 --> 02:25.520
|
| 177 |
+
evento.
|
| 178 |
+
|
| 179 |
+
02:25.520 --> 02:32.360
|
| 180 |
+
Si venimos acá, post list, entonces va a
|
| 181 |
+
ser add even
|
| 182 |
+
|
| 183 |
+
02:32.360 --> 02:34.480
|
| 184 |
+
listener.
|
| 185 |
+
|
| 186 |
+
02:34.480 --> 02:38.280
|
| 187 |
+
Y el evento que queremos nosotros escuchar
|
| 188 |
+
es clic,
|
| 189 |
+
|
| 190 |
+
02:38.280 --> 02:40.520
|
| 191 |
+
hacer un evento de
|
| 192 |
+
clic.
|
| 193 |
+
|
| 194 |
+
02:40.520 --> 02:43.400
|
| 195 |
+
Y aquí vamos a traer al evento mismo,
|
| 196 |
+
|
| 197 |
+
02:43.400 --> 02:46.720
|
| 198 |
+
porque ahí nos va a ser de mucha ayuda.
|
| 199 |
+
|
| 200 |
+
02:46.720 --> 02:50.400
|
| 201 |
+
Vamos a ir parte por parte para que puedas
|
| 202 |
+
entender bien qué es
|
| 203 |
+
|
| 204 |
+
02:50.400 --> 02:52.360
|
| 205 |
+
lo que vamos a estar haciendo
|
| 206 |
+
acá.
|
| 207 |
+
|
| 208 |
+
02:52.360 --> 03:02.760
|
| 209 |
+
Lo primero es que vamos a imprimir un console.
|
| 210 |
+
log event.
|
| 211 |
+
|
| 212 |
+
03:02.760 --> 03:08.680
|
| 213 |
+
Es el momento de traer todos mis posts y
|
| 214 |
+
darle clic en el
|
| 215 |
+
|
| 216 |
+
03:08.680 --> 03:09.880
|
| 217 |
+
evento.
|
| 218 |
+
|
| 219 |
+
03:09.880 --> 03:13.000
|
| 220 |
+
Aquí podemos ver que me trae el evento.
|
| 221 |
+
|
| 222 |
+
03:13.000 --> 03:17.320
|
| 223 |
+
Me está trayendo el objeto del evento mismo.
|
| 224 |
+
|
| 225 |
+
03:17.320 --> 03:22.600
|
| 226 |
+
Y navegando podría yo encontrar cuál es el
|
| 227 |
+
target, por ejemplo.
|
| 228 |
+
|
| 229 |
+
03:22.600 --> 03:25.680
|
| 230 |
+
Si venimos acá y encontramos target,
|
| 231 |
+
|
| 232 |
+
03:25.680 --> 03:28.440
|
| 233 |
+
vemos que le estoy dando clic a un botón.
|
| 234 |
+
|
| 235 |
+
03:28.440 --> 03:30.800
|
| 236 |
+
Y me está trayendo
|
| 237 |
+
automáticamente,
|
| 238 |
+
|
| 239 |
+
03:30.800 --> 03:34.200
|
| 240 |
+
me está como haciendo un highlight del
|
| 241 |
+
botón al cual yo
|
| 242 |
+
|
| 243 |
+
03:34.200 --> 03:35.160
|
| 244 |
+
le di
|
| 245 |
+
clic.
|
| 246 |
+
|
| 247 |
+
03:35.160 --> 03:39.480
|
| 248 |
+
Que esto va a ser distinto si yo me pongo
|
| 249 |
+
y veo otra tarjeta.
|
| 250 |
+
|
| 251 |
+
03:39.480 --> 03:40.000
|
| 252 |
+
¿Por
|
| 253 |
+
qué?
|
| 254 |
+
|
| 255 |
+
03:40.000 --> 03:41.800
|
| 256 |
+
Porque les estoy dando
|
| 257 |
+
clic.
|
| 258 |
+
|
| 259 |
+
03:41.800 --> 03:43.960
|
| 260 |
+
El target me dice a qué elemento le di
|
| 261 |
+
clic en
|
| 262 |
+
|
| 263 |
+
03:43.960 --> 03:45.080
|
| 264 |
+
particular.
|
| 265 |
+
|
| 266 |
+
03:45.080 --> 03:46.320
|
| 267 |
+
No me trae el
|
| 268 |
+
resto.
|
| 269 |
+
|
| 270 |
+
03:46.320 --> 03:46.840
|
| 271 |
+
Perfecto.
|
| 272 |
+
|
| 273 |
+
03:46.840 --> 03:48.560
|
| 274 |
+
Entonces, vamos a empezar por
|
| 275 |
+
ahí.
|
| 276 |
+
|
| 277 |
+
03:48.560 --> 03:53.000
|
| 278 |
+
Ya tenemos que.target me trae este botón
|
| 279 |
+
de forma muy
|
| 280 |
+
|
| 281 |
+
03:53.000 --> 03:53.600
|
| 282 |
+
particular.
|
| 283 |
+
|
| 284 |
+
03:53.600 --> 03:57.240
|
| 285 |
+
Y esto es lo que necesito, porque ya de
|
| 286 |
+
forma específica,
|
| 287 |
+
|
| 288 |
+
03:57.240 --> 03:59.200
|
| 289 |
+
sé a quién le estoy dando
|
| 290 |
+
clic.
|
| 291 |
+
|
| 292 |
+
03:59.200 --> 04:00.720
|
| 293 |
+
Bien.
|
| 294 |
+
|
| 295 |
+
04:00.720 --> 04:03.440
|
| 296 |
+
Entonces, aquí vamos a hacer una pequeña
|
| 297 |
+
validación.
|
| 298 |
+
|
| 299 |
+
04:03.440 --> 04:14.360
|
| 300 |
+
Entonces, la validación va a ser event.target.
|
| 301 |
+
tagname.
|
| 302 |
+
|
| 303 |
+
04:14.360 --> 04:18.680
|
| 304 |
+
Igual a
|
| 305 |
+
botón.
|
| 306 |
+
|
| 307 |
+
04:18.680 --> 04:20.040
|
| 308 |
+
¿Por
|
| 309 |
+
qué?
|
| 310 |
+
|
| 311 |
+
04:20.040 --> 04:21.080
|
| 312 |
+
Tiene que ser
|
| 313 |
+
este.
|
| 314 |
+
|
| 315 |
+
04:21.080 --> 04:24.960
|
| 316 |
+
El tag name tiene que ser igual a botón.
|
| 317 |
+
|
| 318 |
+
04:24.960 --> 04:25.460
|
| 319 |
+
Perfecto.
|
| 320 |
+
|
| 321 |
+
04:25.460 --> 04:29.800
|
| 322 |
+
Entonces, la validación va de si el target
|
| 323 |
+
al cual yo le di
|
| 324 |
+
|
| 325 |
+
04:29.800 --> 04:33.320
|
| 326 |
+
clic tiene un tag name igual a botón.
|
| 327 |
+
|
| 328 |
+
04:33.320 --> 04:37.960
|
| 329 |
+
Si eso sucede, entonces hagamos lo que viene.
|
| 330 |
+
|
| 331 |
+
04:37.960 --> 04:40.880
|
| 332 |
+
Generamos una nueva constante en minúsculas,
|
| 333 |
+
|
| 334 |
+
04:40.880 --> 04:45.240
|
| 335 |
+
constante que se llame post
|
| 336 |
+
ID.
|
| 337 |
+
|
| 338 |
+
04:45.240 --> 04:48.120
|
| 339 |
+
Vamos a sacar el ID de ese
|
| 340 |
+
post.
|
| 341 |
+
|
| 342 |
+
04:48.120 --> 04:55.320
|
| 343 |
+
Y la forma de obtener el ID de ese post va
|
| 344 |
+
a ser event.target.
|
| 345 |
+
|
| 346 |
+
04:55.320 --> 04:55.820
|
| 347 |
+
closest.
|
| 348 |
+
|
| 349 |
+
04:59.120 --> 05:03.080
|
| 350 |
+
Y aquí vamos a buscar una
|
| 351 |
+
etiqueta.
|
| 352 |
+
|
| 353 |
+
05:03.080 --> 05:05.960
|
| 354 |
+
Vamos a hacer aquí el
|
| 355 |
+
post.
|
| 356 |
+
|
| 357 |
+
05:05.960 --> 05:07.320
|
| 358 |
+
Perfecto.
|
| 359 |
+
|
| 360 |
+
05:07.320 --> 05:10.360
|
| 361 |
+
Y
|
| 362 |
+
document.
|
| 363 |
+
|
| 364 |
+
05:10.360 --> 05:12.760
|
| 365 |
+
Venimos aquí, vamos a abrir nuestro body.
|
| 366 |
+
|
| 367 |
+
05:12.760 --> 05:15.200
|
| 368 |
+
Venimos a el
|
| 369 |
+
contenedor.
|
| 370 |
+
|
| 371 |
+
05:15.200 --> 05:19.360
|
| 372 |
+
Y si abrimos el section, podemos ir viendo
|
| 373 |
+
que cada una de las
|
| 374 |
+
|
| 375 |
+
05:19.360 --> 05:22.080
|
| 376 |
+
tarjetas es un
|
| 377 |
+
article.
|
| 378 |
+
|
| 379 |
+
05:22.080 --> 05:25.640
|
| 380 |
+
Y cada uno de estos articles trae un ID.
|
| 381 |
+
|
| 382 |
+
05:25.640 --> 05:34.000
|
| 383 |
+
Entonces, lo que yo quiero es tener acceso
|
| 384 |
+
al article más
|
| 385 |
+
|
| 386 |
+
05:34.000 --> 05:36.200
|
| 387 |
+
cercano.
|
| 388 |
+
|
| 389 |
+
05:36.200 --> 05:40.680
|
| 390 |
+
Y entonces, puedo tener acceso a su ID.
|
| 391 |
+
|
| 392 |
+
05:40.680 --> 05:42.400
|
| 393 |
+
Guardamos
|
| 394 |
+
esto.
|
| 395 |
+
|
| 396 |
+
05:42.400 --> 05:47.520
|
| 397 |
+
Una forma de saber si esto está
|
| 398 |
+
funcionando o no, console.log.
|
| 399 |
+
|
| 400 |
+
05:47.520 --> 05:51.440
|
| 401 |
+
Aquí ponemos post
|
| 402 |
+
ID.
|
| 403 |
+
|
| 404 |
+
05:51.440 --> 05:52.080
|
| 405 |
+
Perfecto.
|
| 406 |
+
|
| 407 |
+
05:52.080 --> 05:53.120
|
| 408 |
+
Guardamos.
|
| 409 |
+
|
| 410 |
+
05:53.120 --> 05:55.480
|
| 411 |
+
Andamos a traer nuestros
|
| 412 |
+
posts.
|
| 413 |
+
|
| 414 |
+
05:55.480 --> 05:59.200
|
| 415 |
+
Vamos a darle clic a
|
| 416 |
+
este.
|
| 417 |
+
|
| 418 |
+
05:59.200 --> 06:00.480
|
| 419 |
+
Hay un
|
| 420 |
+
typo.
|
| 421 |
+
|
| 422 |
+
06:00.480 --> 06:02.120
|
| 423 |
+
Closest.
|
| 424 |
+
|
| 425 |
+
06:02.120 --> 06:02.960
|
| 426 |
+
Perfecto.
|
| 427 |
+
|
| 428 |
+
06:02.960 --> 06:05.680
|
| 429 |
+
Vamos a
|
| 430 |
+
guardar.
|
| 431 |
+
|
| 432 |
+
06:05.680 --> 06:06.200
|
| 433 |
+
Lo
|
| 434 |
+
mismo.
|
| 435 |
+
|
| 436 |
+
06:06.200 --> 06:07.600
|
| 437 |
+
Traemos nuestros
|
| 438 |
+
posts.
|
| 439 |
+
|
| 440 |
+
06:07.600 --> 06:08.680
|
| 441 |
+
Bajamos de forma
|
| 442 |
+
random.
|
| 443 |
+
|
| 444 |
+
06:08.680 --> 06:10.000
|
| 445 |
+
Le damos
|
| 446 |
+
clic.
|
| 447 |
+
|
| 448 |
+
06:10.000 --> 06:15.760
|
| 449 |
+
Entonces, me dice que ahora el ID del post
|
| 450 |
+
al que le di clic es
|
| 451 |
+
|
| 452 |
+
06:15.760 --> 06:17.000
|
| 453 |
+
el
|
| 454 |
+
11.
|
| 455 |
+
|
| 456 |
+
06:17.000 --> 06:22.120
|
| 457 |
+
Y con esta información, yo ya puedo
|
| 458 |
+
decirle al servidor,
|
| 459 |
+
|
| 460 |
+
06:22.120 --> 06:27.560
|
| 461 |
+
en un request HTTP, necesito que me borres
|
| 462 |
+
el artículo cuyo ID
|
| 463 |
+
|
| 464 |
+
06:27.560 --> 06:29.120
|
| 465 |
+
es igual a
|
| 466 |
+
11.
|
| 467 |
+
|
| 468 |
+
06:29.120 --> 06:30.360
|
| 469 |
+
¿Cómo lo estaremos
|
| 470 |
+
haciendo?
|
| 471 |
+
|
| 472 |
+
06:30.360 --> 06:31.560
|
| 473 |
+
Muy
|
| 474 |
+
bien.
|
| 475 |
+
|
| 476 |
+
06:31.560 --> 06:34.720
|
| 477 |
+
Ya que estamos aquí, en esta misma evaluación,
|
| 478 |
+
|
| 479 |
+
06:34.720 --> 06:39.920
|
| 480 |
+
tenemos que mandar traer ahora nuestra
|
| 481 |
+
función que genera el
|
| 482 |
+
|
| 483 |
+
06:39.920 --> 06:42.600
|
| 484 |
+
fetch.
|
| 485 |
+
|
| 486 |
+
06:42.600 --> 06:45.080
|
| 487 |
+
Lo ponemos
|
| 488 |
+
aquí.
|
| 489 |
+
|
| 490 |
+
06:45.080 --> 06:51.280
|
| 491 |
+
Y entonces, el método, pues, el método va
|
| 492 |
+
a ser deletes.
|
| 493 |
+
|
| 494 |
+
06:51.280 --> 06:51.780
|
| 495 |
+
Bien.
|
| 496 |
+
|
| 497 |
+
06:51.780 --> 06:57.000
|
| 498 |
+
La URL, vamos a utilizar la misma URL de
|
| 499 |
+
los posts,
|
| 500 |
+
|
| 501 |
+
06:57.000 --> 06:59.400
|
| 502 |
+
que es la que venimos utilizando para este
|
| 503 |
+
ejercicio.
|
| 504 |
+
|
| 505 |
+
06:59.400 --> 07:02.760
|
| 506 |
+
Bien.
|
| 507 |
+
|
| 508 |
+
07:02.760 --> 07:08.960
|
| 509 |
+
Y la data, aquí, vamos a
|
| 510 |
+
inyectar.
|
| 511 |
+
|
| 512 |
+
07:08.960 --> 07:12.320
|
| 513 |
+
Déjame pongo esto
|
| 514 |
+
aquí.
|
| 515 |
+
|
| 516 |
+
07:12.320 --> 07:16.960
|
| 517 |
+
Para esta data, lo que vamos a hacer es,
|
| 518 |
+
|
| 519 |
+
07:16.960 --> 07:23.360
|
| 520 |
+
adentro de la URL, lo que yo quiero es que
|
| 521 |
+
se entienda cuál
|
| 522 |
+
|
| 523 |
+
07:23.360 --> 07:28.720
|
| 524 |
+
es el ID de ese post que queremos borrar.
|
| 525 |
+
|
| 526 |
+
07:28.720 --> 07:30.640
|
| 527 |
+
Entonces, hacemos
|
| 528 |
+
esto.
|
| 529 |
+
|
| 530 |
+
07:30.640 --> 07:34.000
|
| 531 |
+
Vamos a poner
|
| 532 |
+
esto.
|
| 533 |
+
|
| 534 |
+
07:34.000 --> 07:39.000
|
| 535 |
+
Y vamos a poner el valor del ID, del post ID.
|
| 536 |
+
|
| 537 |
+
07:39.000 --> 07:41.240
|
| 538 |
+
Tiene que ser así, post
|
| 539 |
+
ID.
|
| 540 |
+
|
| 541 |
+
07:41.240 --> 07:44.880
|
| 542 |
+
Pero como estamos agregando el valor de
|
| 543 |
+
una variable,
|
| 544 |
+
|
| 545 |
+
07:44.880 --> 07:50.400
|
| 546 |
+
vamos a utilizar estas
|
| 547 |
+
comillas.
|
| 548 |
+
|
| 549 |
+
07:50.400 --> 07:54.640
|
| 550 |
+
Para que, entonces, podamos utilizar la
|
| 551 |
+
variable que hace
|
| 552 |
+
|
| 553 |
+
07:54.640 --> 07:57.080
|
| 554 |
+
referencia al ID del
|
| 555 |
+
post.
|
| 556 |
+
|
| 557 |
+
07:57.080 --> 08:02.160
|
| 558 |
+
Entonces, en la URL, en post, le vamos a
|
| 559 |
+
poner que quiero que
|
| 560 |
+
|
| 561 |
+
08:02.160 --> 08:04.400
|
| 562 |
+
este post, de forma muy
|
| 563 |
+
particular,
|
| 564 |
+
|
| 565 |
+
08:04.400 --> 08:06.800
|
| 566 |
+
que tiene este ID, se vaya a borrar.
|
| 567 |
+
|
| 568 |
+
08:06.800 --> 08:09.640
|
| 569 |
+
Esto viene en la documentación de cómo
|
| 570 |
+
enviar la información al
|
| 571 |
+
|
| 572 |
+
08:09.640 --> 08:12.360
|
| 573 |
+
momento de borrar un
|
| 574 |
+
post.
|
| 575 |
+
|
| 576 |
+
08:12.360 --> 08:14.640
|
| 577 |
+
Ellos te piden que envíes esta estructura.
|
| 578 |
+
|
| 579 |
+
08:14.640 --> 08:17.040
|
| 580 |
+
Pero es importante poder leer la
|
| 581 |
+
documentación de cada una de
|
| 582 |
+
|
| 583 |
+
08:17.040 --> 08:18.640
|
| 584 |
+
las
|
| 585 |
+
APIs.
|
| 586 |
+
|
| 587 |
+
08:18.640 --> 08:23.520
|
| 588 |
+
Si estás utilizando, por ejemplo, un post,
|
| 589 |
+
un GET,
|
| 590 |
+
|
| 591 |
+
08:23.520 --> 08:27.680
|
| 592 |
+
una API REST, te tiene que venir cómo
|
| 593 |
+
utilizar los verbos y
|
| 594 |
+
|
| 595 |
+
08:27.680 --> 08:29.440
|
| 596 |
+
cuál es la estructura que ellos esperarían.
|
| 597 |
+
|
| 598 |
+
08:29.440 --> 08:34.280
|
| 599 |
+
Entonces, con esto, si nosotros guardamos,
|
| 600 |
+
|
| 601 |
+
08:34.280 --> 08:39.120
|
| 602 |
+
ya tendríamos que tener la facultad de
|
| 603 |
+
poder enviar esa
|
| 604 |
+
|
| 605 |
+
08:39.120 --> 08:39.640
|
| 606 |
+
información.
|
| 607 |
+
|
| 608 |
+
08:39.640 --> 08:40.160
|
| 609 |
+
¿Por
|
| 610 |
+
qué?
|
| 611 |
+
|
| 612 |
+
08:40.160 --> 08:44.760
|
| 613 |
+
Porque estamos agregándole el evento
|
| 614 |
+
directamente a un
|
| 615 |
+
|
| 616 |
+
08:44.760 --> 08:45.800
|
| 617 |
+
elemento.
|
| 618 |
+
|
| 619 |
+
08:45.800 --> 08:49.800
|
| 620 |
+
Aquí estamos validando que le estemos
|
| 621 |
+
dando clic a un botón.
|
| 622 |
+
|
| 623 |
+
08:49.800 --> 08:53.320
|
| 624 |
+
Estamos tomando el ID de ese
|
| 625 |
+
post.
|
| 626 |
+
|
| 627 |
+
08:53.320 --> 08:56.640
|
| 628 |
+
Entonces, estamos haciendo aquí mismo el
|
| 629 |
+
request,
|
| 630 |
+
|
| 631 |
+
08:56.640 --> 08:59.560
|
| 632 |
+
pidiendo que se borre ese
|
| 633 |
+
post.
|
| 634 |
+
|
| 635 |
+
08:59.560 --> 09:02.720
|
| 636 |
+
Así que si todo sale bien, vamos a mandar
|
| 637 |
+
a llamar nuestros
|
| 638 |
+
|
| 639 |
+
09:02.720 --> 09:03.680
|
| 640 |
+
posts.
|
| 641 |
+
|
| 642 |
+
09:03.680 --> 09:05.080
|
| 643 |
+
Perfecto.
|
| 644 |
+
|
| 645 |
+
09:05.080 --> 09:06.520
|
| 646 |
+
Forma
|
| 647 |
+
random.
|
| 648 |
+
|
| 649 |
+
09:06.520 --> 09:07.800
|
| 650 |
+
Vamos a darle
|
| 651 |
+
borrar.
|
| 652 |
+
|
| 653 |
+
09:07.800 --> 09:09.560
|
| 654 |
+
Se tiene que borrar el
|
| 655 |
+
8.
|
| 656 |
+
|
| 657 |
+
09:09.560 --> 09:12.960
|
| 658 |
+
Aquí, visualmente, no está pasando porque,
|
| 659 |
+
pues,
|
| 660 |
+
|
| 661 |
+
09:12.960 --> 09:15.160
|
| 662 |
+
este es un API
|
| 663 |
+
fake.
|
| 664 |
+
|
| 665 |
+
09:15.160 --> 09:23.120
|
| 666 |
+
Pero si venimos aquí a nuestro request,
|
| 667 |
+
a network, y bajamos,
|
| 668 |
+
|
| 669 |
+
09:23.120 --> 09:25.760
|
| 670 |
+
podemos ver que aquí hay un
|
| 671 |
+
8.
|
| 672 |
+
|
| 673 |
+
09:25.760 --> 09:29.760
|
| 674 |
+
Podemos ver aquí que hubo un request de un
|
| 675 |
+
método que era
|
| 676 |
+
|
| 677 |
+
09:29.760 --> 09:32.120
|
| 678 |
+
borrar.
|
| 679 |
+
|
| 680 |
+
09:32.120 --> 09:33.440
|
| 681 |
+
Está trayendo por un
|
| 682 |
+
fetch.
|
| 683 |
+
|
| 684 |
+
09:33.440 --> 09:38.000
|
| 685 |
+
Pero si abrimos esto, en el API dice que
|
| 686 |
+
no se va a enviar,
|
| 687 |
+
|
| 688 |
+
09:38.000 --> 09:39.480
|
| 689 |
+
que no vas a recibir
|
| 690 |
+
información,
|
| 691 |
+
|
| 692 |
+
09:39.480 --> 09:42.040
|
| 693 |
+
más bien porque tú estás enviando que lo
|
| 694 |
+
quieres borrar.
|
| 695 |
+
|
| 696 |
+
09:42.040 --> 09:44.960
|
| 697 |
+
Pero si venimos al header, podemos ver que
|
| 698 |
+
el status fue
|
| 699 |
+
|
| 700 |
+
09:44.960 --> 09:46.080
|
| 701 |
+
200.
|
| 702 |
+
|
| 703 |
+
09:46.080 --> 09:50.440
|
| 704 |
+
Podemos ver que realmente se utilizó el
|
| 705 |
+
método de deletes.
|
| 706 |
+
|
| 707 |
+
09:50.440 --> 09:52.520
|
| 708 |
+
¿Cuál fue la URL que se está
|
| 709 |
+
enviando?
|
| 710 |
+
|
| 711 |
+
09:52.520 --> 09:54.400
|
| 712 |
+
Podemos ver que aquí automáticamente se
|
| 713 |
+
está
|
| 714 |
+
|
| 715 |
+
09:54.400 --> 09:58.320
|
| 716 |
+
agregando el ID del post que queramos borrar,
|
| 717 |
+
que era el 8.
|
| 718 |
+
|
| 719 |
+
09:58.320 --> 10:02.360
|
| 720 |
+
Y con esto, entonces, ya enviamos al
|
| 721 |
+
servidor cuál es el
|
| 722 |
+
|
| 723 |
+
10:02.360 --> 10:03.960
|
| 724 |
+
post que queremos
|
| 725 |
+
borrar.
|
| 726 |
+
|
| 727 |
+
10:03.960 --> 10:06.440
|
| 728 |
+
Lo que faltaría, si este API fuera real,
|
| 729 |
+
|
| 730 |
+
10:06.440 --> 10:08.200
|
| 731 |
+
es que el servidor lo
|
| 732 |
+
borraría.
|
| 733 |
+
|
| 734 |
+
10:08.200 --> 10:11.080
|
| 735 |
+
Y nosotros tendríamos que hacer un nuevo
|
| 736 |
+
request para poder
|
| 737 |
+
|
| 738 |
+
10:11.080 --> 10:14.680
|
| 739 |
+
traer todos los posts menos ese, porque ya
|
| 740 |
+
no estaría en la base
|
| 741 |
+
|
| 742 |
+
10:14.680 --> 10:23.240
|
| 743 |
+
de
|
| 744 |
+
datos.
|
| 745 |
+
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/09-app_cd059276-f2dc-4bdc-a54b-22bc7be4a576.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const listElement = document.querySelector(".posts");
|
| 2 |
+
const postTemplate = document.getElementById("single-post");
|
| 3 |
+
const form = document.querySelector("#new-post form");
|
| 4 |
+
const fetchButton = document.querySelector("#available-posts button");
|
| 5 |
+
const postList = document.querySelector("#posts-container");
|
| 6 |
+
|
| 7 |
+
function sendHTTPRequest(method, url, data) {
|
| 8 |
+
return fetch(url, {
|
| 9 |
+
method: method,
|
| 10 |
+
body: JSON.stringify(data),
|
| 11 |
+
headers: {
|
| 12 |
+
"Content-Type": "application/json",
|
| 13 |
+
},
|
| 14 |
+
}).then((response) => {
|
| 15 |
+
return response.json();
|
| 16 |
+
});
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
async function fecthPosts() {
|
| 20 |
+
const responseData = await sendHTTPRequest(
|
| 21 |
+
"GET",
|
| 22 |
+
"https://jsonplaceholder.typicode.com/posts"
|
| 23 |
+
);
|
| 24 |
+
console.log(responseData);
|
| 25 |
+
const listOfPosts = responseData;
|
| 26 |
+
|
| 27 |
+
for (const post of listOfPosts) {
|
| 28 |
+
const postContainer = document.createElement("article");
|
| 29 |
+
postContainer.id = post.id;
|
| 30 |
+
postContainer.classList.add("post-item");
|
| 31 |
+
|
| 32 |
+
const title = document.createElement("h2");
|
| 33 |
+
title.textContent = post.title;
|
| 34 |
+
|
| 35 |
+
const body = document.createElement("p");
|
| 36 |
+
body.textContent = post.body;
|
| 37 |
+
|
| 38 |
+
const button = document.createElement("button");
|
| 39 |
+
button.textContent = "DELETE Content";
|
| 40 |
+
|
| 41 |
+
postContainer.append(title);
|
| 42 |
+
postContainer.append(body);
|
| 43 |
+
postContainer.append(button);
|
| 44 |
+
|
| 45 |
+
listElement.append(postContainer);
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
fetchButton.addEventListener("click", fecthPosts);
|
| 50 |
+
|
| 51 |
+
async function createPost(title, content) {
|
| 52 |
+
const userId = Math.random();
|
| 53 |
+
const post = {
|
| 54 |
+
title: title,
|
| 55 |
+
body: content,
|
| 56 |
+
userId: userId,
|
| 57 |
+
};
|
| 58 |
+
|
| 59 |
+
sendHTTPRequest("POST", "https://jsonplaceholder.typicode.com/posts", post);
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
form.addEventListener("submit", (event) => {
|
| 63 |
+
event.preventDefault();
|
| 64 |
+
const title = event.currentTarget.querySelector("#title").value;
|
| 65 |
+
const content = event.currentTarget.querySelector("#content").value;
|
| 66 |
+
|
| 67 |
+
createPost(title, content);
|
| 68 |
+
});
|
| 69 |
+
|
| 70 |
+
postList.addEventListener("click", (event) => {
|
| 71 |
+
console.log(event);
|
| 72 |
+
if (event.target.tagName === "BUTTON") {
|
| 73 |
+
const postId = event.target.closest("article").id;
|
| 74 |
+
console.log(postId);
|
| 75 |
+
sendHTTPRequest(
|
| 76 |
+
"DELETE",
|
| 77 |
+
`https://jsonplaceholder.typicode.com/posts/${postId}`
|
| 78 |
+
);
|
| 79 |
+
}
|
| 80 |
+
});
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Manejo de IDs en JavaScript para eliminar artículos del DOM.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e7e42dffc545a81ef86f13a48542ed12c5bead0ae33df50440691c4e414a82cf
|
| 3 |
+
size 23060581
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Manejo de IDs en JavaScript para eliminar artículos del DOM.vtt
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:02.640
|
| 4 |
+
Ya tenemos todo el proyecto
|
| 5 |
+
listo.
|
| 6 |
+
|
| 7 |
+
00:02.640 --> 00:05.680
|
| 8 |
+
Ahora, puede que te salga una
|
| 9 |
+
duda,
|
| 10 |
+
|
| 11 |
+
00:05.680 --> 00:08.920
|
| 12 |
+
que es, ¿de dónde vino este
|
| 13 |
+
ID?
|
| 14 |
+
|
| 15 |
+
00:08.920 --> 00:11.640
|
| 16 |
+
¿De dónde vino el ID que estamos
|
| 17 |
+
utilizando
|
| 18 |
+
|
| 19 |
+
00:11.640 --> 00:12.840
|
| 20 |
+
para poder
|
| 21 |
+
borrar?
|
| 22 |
+
|
| 23 |
+
00:12.840 --> 00:15.040
|
| 24 |
+
O para poder mandar el
|
| 25 |
+
request
|
| 26 |
+
|
| 27 |
+
00:15.040 --> 00:17.440
|
| 28 |
+
para que se borre este
|
| 29 |
+
artículo.
|
| 30 |
+
|
| 31 |
+
00:17.440 --> 00:21.960
|
| 32 |
+
Este ID viene prácticamente en la
|
| 33 |
+
respuesta
|
| 34 |
+
|
| 35 |
+
00:21.960 --> 00:23.560
|
| 36 |
+
de cuando nosotros hicimos un
|
| 37 |
+
GET.
|
| 38 |
+
|
| 39 |
+
00:23.560 --> 00:25.320
|
| 40 |
+
Si voy a
|
| 41 |
+
Network,
|
| 42 |
+
|
| 43 |
+
00:25.320 --> 00:28.160
|
| 44 |
+
y le doy un poco de espacio
|
| 45 |
+
aquí,
|
| 46 |
+
|
| 47 |
+
00:28.160 --> 00:31.880
|
| 48 |
+
me veo aquí a
|
| 49 |
+
Posts,
|
| 50 |
+
|
| 51 |
+
00:31.880 --> 00:32.920
|
| 52 |
+
me voy a
|
| 53 |
+
Preview,
|
| 54 |
+
|
| 55 |
+
00:32.920 --> 00:34.480
|
| 56 |
+
o vamos aquí a
|
| 57 |
+
Response,
|
| 58 |
+
|
| 59 |
+
00:34.480 --> 00:36.240
|
| 60 |
+
este ID viene en la
|
| 61 |
+
respuesta.
|
| 62 |
+
|
| 63 |
+
00:36.240 --> 00:39.960
|
| 64 |
+
Y lo que yo estoy haciendo con la
|
| 65 |
+
respuesta
|
| 66 |
+
|
| 67 |
+
00:39.960 --> 00:44.280
|
| 68 |
+
es empezar a generar los elementos en
|
| 69 |
+
JavaScript
|
| 70 |
+
|
| 71 |
+
00:44.280 --> 00:47.640
|
| 72 |
+
que quiero agregar directamente en el DOM.
|
| 73 |
+
|
| 74 |
+
00:47.640 --> 00:51.440
|
| 75 |
+
Y cuando generé el elemento del artículo,
|
| 76 |
+
|
| 77 |
+
00:51.440 --> 00:55.280
|
| 78 |
+
que va a ser el contenedor de cada uno de
|
| 79 |
+
los posts,
|
| 80 |
+
|
| 81 |
+
00:55.280 --> 00:58.080
|
| 82 |
+
con JavaScript estoy agregándole el
|
| 83 |
+
ID
|
| 84 |
+
|
| 85 |
+
00:58.080 --> 00:59.960
|
| 86 |
+
que si ahorita vemos aquí en elementos,
|
| 87 |
+
|
| 88 |
+
00:59.960 --> 01:02.120
|
| 89 |
+
por ejemplo, abrimos aquí y abrimos acá,
|
| 90 |
+
|
| 91 |
+
01:03.240 --> 01:05.720
|
| 92 |
+
cuando estoy generando la etiqueta de
|
| 93 |
+
artículo,
|
| 94 |
+
|
| 95 |
+
01:05.720 --> 01:07.600
|
| 96 |
+
le estoy generando el
|
| 97 |
+
ID
|
| 98 |
+
|
| 99 |
+
01:07.600 --> 01:10.640
|
| 100 |
+
y le estoy pidiendo que el ID sea
|
| 101 |
+
igual
|
| 102 |
+
|
| 103 |
+
01:10.640 --> 01:14.360
|
| 104 |
+
al ID que viene de la respuesta del servidor.
|
| 105 |
+
|
| 106 |
+
01:14.360 --> 01:15.760
|
| 107 |
+
Y eso lo estoy haciendo
|
| 108 |
+
acá.
|
| 109 |
+
|
| 110 |
+
01:16.840 --> 01:18.600
|
| 111 |
+
Entonces, cuando estoy
|
| 112 |
+
aquí,
|
| 113 |
+
|
| 114 |
+
01:19.840 --> 01:23.400
|
| 115 |
+
haciendo un loop en cada uno de los
|
| 116 |
+
elementos
|
| 117 |
+
|
| 118 |
+
01:23.400 --> 01:26.480
|
| 119 |
+
de los posts que viene de mi
|
| 120 |
+
lista,
|
| 121 |
+
|
| 122 |
+
01:26.480 --> 01:31.240
|
| 123 |
+
y estoy generando el elemento de
|
| 124 |
+
PostContainer,
|
| 125 |
+
|
| 126 |
+
01:31.240 --> 01:32.680
|
| 127 |
+
que es el
|
| 128 |
+
artículo,
|
| 129 |
+
|
| 130 |
+
01:32.680 --> 01:35.120
|
| 131 |
+
una vez que este PostContainer ya existe,
|
| 132 |
+
|
| 133 |
+
01:35.120 --> 01:36.360
|
| 134 |
+
aquí le estoy generando el
|
| 135 |
+
ID,
|
| 136 |
+
|
| 137 |
+
01:36.360 --> 01:40.760
|
| 138 |
+
le estoy diciendo el
|
| 139 |
+
PostContainer.ID
|
| 140 |
+
|
| 141 |
+
01:40.760 --> 01:45.760
|
| 142 |
+
que tiene que hacer relación al atributo
|
| 143 |
+
de mi etiqueta
|
| 144 |
+
|
| 145 |
+
01:46.760 --> 01:49.000
|
| 146 |
+
que sea igual al
|
| 147 |
+
PostID
|
| 148 |
+
|
| 149 |
+
01:49.000 --> 01:52.880
|
| 150 |
+
que viene de parte de la respuesta del
|
| 151 |
+
servidor.
|
| 152 |
+
|
| 153 |
+
01:52.880 --> 01:55.680
|
| 154 |
+
Entonces, cuando se generan todos los
|
| 155 |
+
elementos,
|
| 156 |
+
|
| 157 |
+
01:55.680 --> 01:58.840
|
| 158 |
+
evidentemente se va a generar cada uno de
|
| 159 |
+
los articles
|
| 160 |
+
|
| 161 |
+
01:58.840 --> 02:01.760
|
| 162 |
+
con cada uno de los IDs de los posts.
|
| 163 |
+
|
| 164 |
+
02:01.760 --> 02:03.120
|
| 165 |
+
Y entonces en la parte de
|
| 166 |
+
abajo,
|
| 167 |
+
|
| 168 |
+
02:03.120 --> 02:05.360
|
| 169 |
+
simplemente lo que yo estoy
|
| 170 |
+
haciendo
|
| 171 |
+
|
| 172 |
+
02:05.360 --> 02:09.960
|
| 173 |
+
es estoy pidiendo que lleguemos a ese
|
| 174 |
+
atributo de la etiqueta
|
| 175 |
+
|
| 176 |
+
02:09.960 --> 02:14.040
|
| 177 |
+
que es ID y que entonces ese ID me lo
|
| 178 |
+
pueda guardar
|
| 179 |
+
|
| 180 |
+
02:14.040 --> 02:17.280
|
| 181 |
+
en PostID para que yo pueda utilizar
|
| 182 |
+
eso
|
| 183 |
+
|
| 184 |
+
02:17.280 --> 02:19.520
|
| 185 |
+
y enviárselo de regreso al
|
| 186 |
+
servidor
|
| 187 |
+
|
| 188 |
+
02:19.520 --> 02:20.800
|
| 189 |
+
para que el servidor
|
| 190 |
+
sepa
|
| 191 |
+
|
| 192 |
+
02:20.800 --> 02:25.800
|
| 193 |
+
cuál es el elemento que yo tengo que borrar.
|
| 194 |
+
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/10-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Actualizaciones y Nuevas Funciones en JavaScript.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:28a96653509563f3f4adcb8e69b7f0088c72fe9ab36b562dd49dafbb3b543817
|
| 3 |
+
size 28457797
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Actualizaciones y Nuevas Funciones en JavaScript.vtt
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:03.280
|
| 4 |
+
Como puede usted ver a lo largo de algunas
|
| 5 |
+
clases en el curso,
|
| 6 |
+
|
| 7 |
+
00:03.280 --> 00:05.680
|
| 8 |
+
JavaScript es un lenguaje que sigue
|
| 9 |
+
evolucionando.
|
| 10 |
+
|
| 11 |
+
00:05.680 --> 00:08.440
|
| 12 |
+
Van saliendo cosas nuevas, como fueron las
|
| 13 |
+
clases,
|
| 14 |
+
|
| 15 |
+
00:08.440 --> 00:10.960
|
| 16 |
+
como fueron estas nuevas variables que
|
| 17 |
+
serían const
|
| 18 |
+
|
| 19 |
+
00:10.960 --> 00:13.280
|
| 20 |
+
length, como pueden ser las arrow function,
|
| 21 |
+
|
| 22 |
+
00:13.280 --> 00:16.120
|
| 23 |
+
y muchos otros aditamentos que hacen que
|
| 24 |
+
JavaScript empiece
|
| 25 |
+
|
| 26 |
+
00:16.120 --> 00:18.960
|
| 27 |
+
a evolucionar, siga creciendo, y lo haga
|
| 28 |
+
un mejor lenguaje para
|
| 29 |
+
|
| 30 |
+
00:18.960 --> 00:20.160
|
| 31 |
+
poder
|
| 32 |
+
programar.
|
| 33 |
+
|
| 34 |
+
00:20.160 --> 00:22.720
|
| 35 |
+
Esto quiere decir que JavaScript va a
|
| 36 |
+
seguir evolucionando.
|
| 37 |
+
|
| 38 |
+
00:22.720 --> 00:24.600
|
| 39 |
+
Y lo que yo te recomiendo ahorita que
|
| 40 |
+
tienes todos los
|
| 41 |
+
|
| 42 |
+
00:24.600 --> 00:27.080
|
| 43 |
+
fundamentos es que te sigas informando de
|
| 44 |
+
qué es lo nuevo
|
| 45 |
+
|
| 46 |
+
00:27.080 --> 00:28.120
|
| 47 |
+
que va a
|
| 48 |
+
venir.
|
| 49 |
+
|
| 50 |
+
00:28.120 --> 00:30.440
|
| 51 |
+
Cada una de las propuestas que van a
|
| 52 |
+
seguir saliendo en
|
| 53 |
+
|
| 54 |
+
00:30.440 --> 00:33.400
|
| 55 |
+
JavaScript están hechas pensadas en
|
| 56 |
+
solucionar problemas.
|
| 57 |
+
|
| 58 |
+
00:33.400 --> 00:36.840
|
| 59 |
+
Que si tú en tu carrera empiezas a tener
|
| 60 |
+
más proyectos,
|
| 61 |
+
|
| 62 |
+
00:36.840 --> 00:38.360
|
| 63 |
+
vas a enfrentarte a estos problemas.
|
| 64 |
+
|
| 65 |
+
00:38.360 --> 00:41.440
|
| 66 |
+
Y las nuevas propuestas lo que proponen es
|
| 67 |
+
que esos problemas
|
| 68 |
+
|
| 69 |
+
00:41.440 --> 00:44.120
|
| 70 |
+
dejen de ser problemas, dejes de buscar
|
| 71 |
+
formas de cómo
|
| 72 |
+
|
| 73 |
+
00:44.120 --> 00:46.520
|
| 74 |
+
solucionarlos, y más bien el lenguaje te
|
| 75 |
+
ayuda a
|
| 76 |
+
|
| 77 |
+
00:46.520 --> 00:49.500
|
| 78 |
+
solucionarlos para que tu trabajo como
|
| 79 |
+
desarrollador sea
|
| 80 |
+
|
| 81 |
+
00:49.500 --> 00:50.760
|
| 82 |
+
mucho más
|
| 83 |
+
fácil.
|
| 84 |
+
|
| 85 |
+
00:50.760 --> 00:53.720
|
| 86 |
+
En la documentación te voy a dejar la
|
| 87 |
+
información de dónde
|
| 88 |
+
|
| 89 |
+
00:53.720 --> 00:56.640
|
| 90 |
+
puedes buscar estas nuevas actualizaciones
|
| 91 |
+
del mismo
|
| 92 |
+
|
| 93 |
+
00:56.640 --> 00:57.400
|
| 94 |
+
lenguaje.
|
| 95 |
+
|
| 96 |
+
00:57.400 --> 00:59.600
|
| 97 |
+
Mi recomendación es que vayas leyendo,
|
| 98 |
+
|
| 99 |
+
00:59.600 --> 01:02.560
|
| 100 |
+
vayas viendo qué cosas están trabajando
|
| 101 |
+
ahorita y qué cosas
|
| 102 |
+
|
| 103 |
+
01:02.560 --> 01:05.040
|
| 104 |
+
van a venir para que puedas estar
|
| 105 |
+
preparado para cuando esto
|
| 106 |
+
|
| 107 |
+
01:05.040 --> 01:06.040
|
| 108 |
+
salga.
|
| 109 |
+
|
| 110 |
+
01:06.040 --> 01:08.000
|
| 111 |
+
Ahora, a lo largo de toda esta escuela,
|
| 112 |
+
|
| 113 |
+
01:08.000 --> 01:10.680
|
| 114 |
+
ya que tienes los fundamentos, vas a
|
| 115 |
+
seguir viendo cómo
|
| 116 |
+
|
| 117 |
+
01:10.680 --> 01:13.000
|
| 118 |
+
implementas estos fundamentos en otras áreas.
|
| 119 |
+
|
| 120 |
+
01:13.000 --> 01:15.760
|
| 121 |
+
Por ejemplo, ¿cómo podrías empezar a hacer
|
| 122 |
+
páginas
|
| 123 |
+
|
| 124 |
+
01:15.760 --> 01:18.920
|
| 125 |
+
dinámicas 100% con JavaScript
|
| 126 |
+
vanilla?
|
| 127 |
+
|
| 128 |
+
01:18.920 --> 01:20.600
|
| 129 |
+
A esto se le llama manipulación del DOM.
|
| 130 |
+
|
| 131 |
+
01:20.600 --> 01:23.520
|
| 132 |
+
O, ¿cómo puedes empezar a generar
|
| 133 |
+
fragmentos de código
|
| 134 |
+
|
| 135 |
+
01:23.520 --> 01:26.960
|
| 136 |
+
que puedas encapsular para construir tus
|
| 137 |
+
componentes solo
|
| 138 |
+
|
| 139 |
+
01:26.960 --> 01:29.600
|
| 140 |
+
con JavaScript para poder construir ya tus
|
| 141 |
+
páginas?
|
| 142 |
+
|
| 143 |
+
01:29.600 --> 01:32.960
|
| 144 |
+
O incluso, ¿cómo le puedes sacar mucha más
|
| 145 |
+
ventaja a todas estas
|
| 146 |
+
|
| 147 |
+
01:32.960 --> 01:36.240
|
| 148 |
+
APIs que existen en el navegador
|
| 149 |
+
directamente con JavaScript
|
| 150 |
+
|
| 151 |
+
01:36.240 --> 01:38.760
|
| 152 |
+
para que nuestros proyectos puedan ser
|
| 153 |
+
mucho más robustos
|
| 154 |
+
|
| 155 |
+
01:38.760 --> 01:41.680
|
| 156 |
+
y saquen toda la ventaja que el mismo
|
| 157 |
+
navegador tiene para
|
| 158 |
+
|
| 159 |
+
01:41.680 --> 01:42.600
|
| 160 |
+
darnos?
|
| 161 |
+
|
| 162 |
+
01:42.600 --> 01:45.080
|
| 163 |
+
Si te gustó el curso, dale cinco estrellas,
|
| 164 |
+
|
| 165 |
+
01:45.080 --> 01:47.640
|
| 166 |
+
presenta tu examen y nos estaremos viendo
|
| 167 |
+
en siguientes
|
| 168 |
+
|
| 169 |
+
01:47.640 --> 01:57.200
|
| 170 |
+
clases.
|
| 171 |
+
|
subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/11-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://platzi.com/cursos/c-plus-plus/
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Manejo de Memoria y Punteros en C.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e0e09065020d109272f24873b2f139f4e179b16b4e0ef46d0e4335b67940cd39
|
| 3 |
+
size 70385175
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Manejo de Memoria y Punteros en C.vtt
ADDED
|
@@ -0,0 +1,385 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.040 --> 00:00:04.960
|
| 4 |
+
Hola, mi nombre es Diana Martínez, y voy
|
| 5 |
+
|
| 6 |
+
00:00:04.960 --> 00:00:06.879
|
| 7 |
+
a ser tu profesora en el curso de
|
| 8 |
+
|
| 9 |
+
00:00:06.879 --> 00:00:09.679
|
| 10 |
+
programación orientada a objetos con C más más.
|
| 11 |
+
|
| 12 |
+
00:00:09.679 --> 00:00:12.420
|
| 13 |
+
Recuerda que para realizar este curso te sugerimos
|
| 14 |
+
|
| 15 |
+
00:00:12.639 --> 00:00:15.700
|
| 16 |
+
realizar el curso básico de C más más.
|
| 17 |
+
|
| 18 |
+
00:00:16.535 --> 00:00:18.615
|
| 19 |
+
Vamos a comenzar con el primer tema de
|
| 20 |
+
|
| 21 |
+
00:00:18.615 --> 00:00:21.495
|
| 22 |
+
este curso. Vamos a hablar sobre el manejo
|
| 23 |
+
|
| 24 |
+
00:00:21.495 --> 00:00:24.855
|
| 25 |
+
de memoria, es decir, sobre cómo CYC más
|
| 26 |
+
|
| 27 |
+
00:00:24.855 --> 00:00:28.455
|
| 28 |
+
más utilizan los punteros. Para esto es importante
|
| 29 |
+
|
| 30 |
+
00:00:28.455 --> 00:00:31.240
|
| 31 |
+
hablar sobre cómo funcionan las computadoras. Las computadoras,
|
| 32 |
+
|
| 33 |
+
00:00:31.240 --> 00:00:34.860
|
| 34 |
+
sobre todo, se dividen en dos partes principales,
|
| 35 |
+
|
| 36 |
+
00:00:35.080 --> 00:00:38.120
|
| 37 |
+
la CPU y la memoria. La CPU es
|
| 38 |
+
|
| 39 |
+
00:00:38.120 --> 00:00:39.720
|
| 40 |
+
la parte de la computadora que va a
|
| 41 |
+
|
| 42 |
+
00:00:39.720 --> 00:00:43.239
|
| 43 |
+
realizar todas las operaciones matemáticas, lógicas y de
|
| 44 |
+
|
| 45 |
+
00:00:43.239 --> 00:00:46.265
|
| 46 |
+
control de nuestro programa. Es la maquinaria central
|
| 47 |
+
|
| 48 |
+
00:00:47.045 --> 00:00:49.305
|
| 49 |
+
y es como el cerebro de nuestra computadora.
|
| 50 |
+
|
| 51 |
+
00:00:49.845 --> 00:00:51.765
|
| 52 |
+
La memoria es el lugar donde se van
|
| 53 |
+
|
| 54 |
+
00:00:51.765 --> 00:00:54.485
|
| 55 |
+
a almacenar todos los datos relacionados con nuestro
|
| 56 |
+
|
| 57 |
+
00:00:54.485 --> 00:00:56.325
|
| 58 |
+
programa, desde el código que se va a
|
| 59 |
+
|
| 60 |
+
00:00:56.325 --> 00:00:58.885
|
| 61 |
+
ejecutar hasta las variables que se van a
|
| 62 |
+
|
| 63 |
+
00:00:58.885 --> 00:01:01.145
|
| 64 |
+
ir utilizando a lo largo de la ejecución.
|
| 65 |
+
|
| 66 |
+
00:01:01.980 --> 00:01:04.379
|
| 67 |
+
Es importante que entiendas que estos dos se
|
| 68 |
+
|
| 69 |
+
00:01:04.379 --> 00:01:06.540
|
| 70 |
+
van a estar comunicando todo el tiempo de
|
| 71 |
+
|
| 72 |
+
00:01:06.540 --> 00:01:09.259
|
| 73 |
+
forma constante. La RAM almacena el código que
|
| 74 |
+
|
| 75 |
+
00:01:09.259 --> 00:01:11.920
|
| 76 |
+
se ejecuta, así que la CPU en realidad
|
| 77 |
+
|
| 78 |
+
00:01:11.979 --> 00:01:14.625
|
| 79 |
+
va a ir leyendo instrucciones de ahí y
|
| 80 |
+
|
| 81 |
+
00:01:14.625 --> 00:01:17.265
|
| 82 |
+
la CPU va a poder acceder a cada
|
| 83 |
+
|
| 84 |
+
00:01:17.265 --> 00:01:19.825
|
| 85 |
+
uno de los registros de la memoria donde
|
| 86 |
+
|
| 87 |
+
00:01:19.825 --> 00:01:22.465
|
| 88 |
+
se almacenan los datos de nuestro programa. Se
|
| 89 |
+
|
| 90 |
+
00:01:22.465 --> 00:01:25.985
|
| 91 |
+
van a estar comunicando todo el tiempo. Para
|
| 92 |
+
|
| 93 |
+
00:01:25.985 --> 00:01:29.650
|
| 94 |
+
hablar más específico, la RAM tiene cierta segmentación.
|
| 95 |
+
|
| 96 |
+
00:01:30.030 --> 00:01:32.909
|
| 97 |
+
Nuestro sistema operativo lo que realiza es una
|
| 98 |
+
|
| 99 |
+
00:01:32.909 --> 00:01:35.950
|
| 100 |
+
gestión de recursos en nuestra computadora y cuando
|
| 101 |
+
|
| 102 |
+
00:01:35.950 --> 00:01:39.470
|
| 103 |
+
nuestro programa comience a ejecutarse, en ese momento
|
| 104 |
+
|
| 105 |
+
00:01:39.470 --> 00:01:41.710
|
| 106 |
+
le aparta un espacio dentro de la memoria
|
| 107 |
+
|
| 108 |
+
00:01:41.710 --> 00:01:43.884
|
| 109 |
+
RAM donde lo va a cargar y donde
|
| 110 |
+
|
| 111 |
+
00:01:43.884 --> 00:01:47.505
|
| 112 |
+
va a poder almacenar todos los datos relacionados.
|
| 113 |
+
|
| 114 |
+
00:01:48.685 --> 00:01:51.884
|
| 115 |
+
Esta segmentación tiene una forma muy específica de
|
| 116 |
+
|
| 117 |
+
00:01:51.884 --> 00:01:54.784
|
| 118 |
+
ocurrir dentro de C más más. Los diferentes
|
| 119 |
+
|
| 120 |
+
00:01:55.005 --> 00:01:58.369
|
| 121 |
+
lenguajes de programación suelen realizarlo de forma similar,
|
| 122 |
+
|
| 123 |
+
00:01:58.369 --> 00:02:00.689
|
| 124 |
+
pero no siempre es de esta manera. Sin
|
| 125 |
+
|
| 126 |
+
00:02:00.689 --> 00:02:02.930
|
| 127 |
+
embargo, en lenguajes como seis C más más
|
| 128 |
+
|
| 129 |
+
00:02:02.930 --> 00:02:05.409
|
| 130 |
+
esta es la forma estándar en cómo se
|
| 131 |
+
|
| 132 |
+
00:02:05.409 --> 00:02:09.065
|
| 133 |
+
almacenan los diferentes datos de un programa. Se
|
| 134 |
+
|
| 135 |
+
00:02:09.065 --> 00:02:12.424
|
| 136 |
+
segmenta en estas partes que estás viendo en
|
| 137 |
+
|
| 138 |
+
00:02:12.424 --> 00:02:14.525
|
| 139 |
+
pantalla. La primera es la sección de instrucciones.
|
| 140 |
+
|
| 141 |
+
00:02:14.985 --> 00:02:18.025
|
| 142 |
+
Todas las instrucciones que después de realizar el
|
| 143 |
+
|
| 144 |
+
00:02:18.025 --> 00:02:20.985
|
| 145 |
+
proceso de compilación de nuestro código quedan almacenadas
|
| 146 |
+
|
| 147 |
+
00:02:20.985 --> 00:02:23.485
|
| 148 |
+
en alguna parte, en un archivo ejecutable. Esas
|
| 149 |
+
|
| 150 |
+
00:02:23.720 --> 00:02:26.200
|
| 151 |
+
van en la primera sección de memoria. Se
|
| 152 |
+
|
| 153 |
+
00:02:26.200 --> 00:02:28.760
|
| 154 |
+
carga nuestro programa en esa sección. La segunda
|
| 155 |
+
|
| 156 |
+
00:02:28.760 --> 00:02:31.800
|
| 157 |
+
sección es la sección de literales. Como vimos,
|
| 158 |
+
|
| 159 |
+
00:02:31.800 --> 00:02:35.000
|
| 160 |
+
a veces podemos definir constantes y otros valores
|
| 161 |
+
|
| 162 |
+
00:02:35.000 --> 00:02:37.000
|
| 163 |
+
que no cambian a lo largo del programa,
|
| 164 |
+
|
| 165 |
+
00:02:37.000 --> 00:02:39.585
|
| 166 |
+
como cuando hicimos nuestro ejemplo de hola mundo.
|
| 167 |
+
|
| 168 |
+
00:02:39.585 --> 00:02:42.485
|
| 169 |
+
No era una variable, era un valor literal.
|
| 170 |
+
|
| 171 |
+
00:02:43.505 --> 00:02:45.905
|
| 172 |
+
De ese modo, todos los datos que son
|
| 173 |
+
|
| 174 |
+
00:02:45.905 --> 00:02:49.505
|
| 175 |
+
de tipo literal no necesitan alojarse en ninguna
|
| 176 |
+
|
| 177 |
+
00:02:49.505 --> 00:02:51.365
|
| 178 |
+
otra parte de la memoria y son acomodados
|
| 179 |
+
|
| 180 |
+
00:02:51.665 --> 00:02:54.730
|
| 181 |
+
justo allí. La siguiente sección es la sección
|
| 182 |
+
|
| 183 |
+
00:02:54.730 --> 00:02:58.010
|
| 184 |
+
de datos estáticos. Aquí, las variables que tú
|
| 185 |
+
|
| 186 |
+
00:02:58.010 --> 00:03:01.050
|
| 187 |
+
hayas declarado van a reservar su espacio. Si
|
| 188 |
+
|
| 189 |
+
00:03:01.050 --> 00:03:03.630
|
| 190 |
+
tú creaste una variable tipo entero, tipo carácter
|
| 191 |
+
|
| 192 |
+
00:03:04.090 --> 00:03:07.615
|
| 193 |
+
o tipo cadena de texto de tamaño fijo,
|
| 194 |
+
|
| 195 |
+
00:03:07.615 --> 00:03:09.295
|
| 196 |
+
tú vas a tener todos estos datos en
|
| 197 |
+
|
| 198 |
+
00:03:09.295 --> 00:03:11.535
|
| 199 |
+
la sección de datos estáticos, y esto es
|
| 200 |
+
|
| 201 |
+
00:03:11.535 --> 00:03:14.815
|
| 202 |
+
porque nuestro compilador nos reserva una memoria, un
|
| 203 |
+
|
| 204 |
+
00:03:14.815 --> 00:03:17.855
|
| 205 |
+
espacio de memoria, donde podemos almacenar de forma
|
| 206 |
+
|
| 207 |
+
00:03:17.855 --> 00:03:21.420
|
| 208 |
+
definida, con un tamaño definido, estos datos. Recuerda
|
| 209 |
+
|
| 210 |
+
00:03:21.420 --> 00:03:23.880
|
| 211 |
+
que, por ejemplo, un entero va a almacenarse
|
| 212 |
+
|
| 213 |
+
00:03:24.100 --> 00:03:26.420
|
| 214 |
+
en cuatro bytes y esto nunca va a
|
| 215 |
+
|
| 216 |
+
00:03:26.420 --> 00:03:29.700
|
| 217 |
+
cambiar. Puede variar dependiendo de la computadora, pero
|
| 218 |
+
|
| 219 |
+
00:03:29.700 --> 00:03:32.260
|
| 220 |
+
dentro de la misma computadora siempre serán la
|
| 221 |
+
|
| 222 |
+
00:03:32.260 --> 00:03:36.685
|
| 223 |
+
misma cantidad de bytes. Así que el compilador
|
| 224 |
+
|
| 225 |
+
00:03:36.745 --> 00:03:39.705
|
| 226 |
+
nos hace el favor de reservar un espacio
|
| 227 |
+
|
| 228 |
+
00:03:39.705 --> 00:03:43.864
|
| 229 |
+
de tamaño estático para estos datos. Las siguientes
|
| 230 |
+
|
| 231 |
+
00:03:43.864 --> 00:03:47.405
|
| 232 |
+
dos secciones son las secciones de memoria dinámica.
|
| 233 |
+
|
| 234 |
+
00:03:47.980 --> 00:03:50.780
|
| 235 |
+
Fíjate cómo crecen la memoria HEP y la
|
| 236 |
+
|
| 237 |
+
00:03:50.780 --> 00:03:54.460
|
| 238 |
+
memoria Stack. La memoria HEP es controlada por
|
| 239 |
+
|
| 240 |
+
00:03:54.460 --> 00:03:59.420
|
| 241 |
+
el programador y esta crece de forma, conforme
|
| 242 |
+
|
| 243 |
+
00:03:59.420 --> 00:04:02.560
|
| 244 |
+
crecen los números de la dirección de memoria.
|
| 245 |
+
|
| 246 |
+
00:04:02.985 --> 00:04:04.665
|
| 247 |
+
Ahorita vamos a hablar sobre cómo crecen los
|
| 248 |
+
|
| 249 |
+
00:04:04.665 --> 00:04:07.224
|
| 250 |
+
números de la dirección de memoria, pero es
|
| 251 |
+
|
| 252 |
+
00:04:07.224 --> 00:04:10.125
|
| 253 |
+
importante que entiendas que crecen en sentidos contrarios
|
| 254 |
+
|
| 255 |
+
00:04:10.185 --> 00:04:12.125
|
| 256 |
+
la memoria hip y la memoria de stack.
|
| 257 |
+
|
| 258 |
+
00:04:12.265 --> 00:04:15.385
|
| 259 |
+
Esto sucede porque el espacio intermedio que puedes
|
| 260 |
+
|
| 261 |
+
00:04:15.385 --> 00:04:18.810
|
| 262 |
+
ver ahí es un espacio limpio que reserva
|
| 263 |
+
|
| 264 |
+
00:04:18.950 --> 00:04:23.110
|
| 265 |
+
nuestro sistema operativo y nuestro compilador solicita, de
|
| 266 |
+
|
| 267 |
+
00:04:23.110 --> 00:04:25.110
|
| 268 |
+
forma que podamos crecer en la cantidad de
|
| 269 |
+
|
| 270 |
+
00:04:25.110 --> 00:04:27.690
|
| 271 |
+
datos que estamos utilizando durante la ejecución del
|
| 272 |
+
|
| 273 |
+
00:04:27.750 --> 00:04:31.310
|
| 274 |
+
programa. Por ejemplo, si tú realizas un programa
|
| 275 |
+
|
| 276 |
+
00:04:31.310 --> 00:04:34.785
|
| 277 |
+
por como Excel, pues nunca sabes exactamente cuántos
|
| 278 |
+
|
| 279 |
+
00:04:34.925 --> 00:04:37.085
|
| 280 |
+
archivos o cuántas celdas va a tener una
|
| 281 |
+
|
| 282 |
+
00:04:37.085 --> 00:04:39.885
|
| 283 |
+
tabla, ¿no? Entonces, no se sabe con precisión
|
| 284 |
+
|
| 285 |
+
00:04:39.885 --> 00:04:42.925
|
| 286 |
+
o con exactitud cuántos bytes o qué tamaño
|
| 287 |
+
|
| 288 |
+
00:04:42.925 --> 00:04:45.485
|
| 289 |
+
de memoria reservar, por lo tanto, se reserva
|
| 290 |
+
|
| 291 |
+
00:04:45.485 --> 00:04:48.650
|
| 292 |
+
un tamaño bastante amplio y se van registrando,
|
| 293 |
+
|
| 294 |
+
00:04:48.950 --> 00:04:52.310
|
| 295 |
+
pues, los datos conforme van creciendo. Para evitar
|
| 296 |
+
|
| 297 |
+
00:04:52.310 --> 00:04:56.070
|
| 298 |
+
que colisionen, pues, se trata de que crezcan
|
| 299 |
+
|
| 300 |
+
00:04:56.070 --> 00:04:58.950
|
| 301 |
+
en direcciones opuestas. Así, se acercarán cada vez
|
| 302 |
+
|
| 303 |
+
00:04:58.950 --> 00:05:01.695
|
| 304 |
+
más al centro de ese espacio vacío, pero
|
| 305 |
+
|
| 306 |
+
00:05:02.395 --> 00:05:04.555
|
| 307 |
+
teóricamente nunca llegarán ahí. Y si eso llegara
|
| 308 |
+
|
| 309 |
+
00:05:04.555 --> 00:05:07.615
|
| 310 |
+
a pasar, pues ocurriría una situación de desbordamiento
|
| 311 |
+
|
| 312 |
+
00:05:07.755 --> 00:05:10.235
|
| 313 |
+
de memoria, que es un bug bastante conocido
|
| 314 |
+
|
| 315 |
+
00:05:10.235 --> 00:05:12.975
|
| 316 |
+
de lenguajes compilados como seis c más más.
|
| 317 |
+
|
| 318 |
+
00:05:13.610 --> 00:05:16.490
|
| 319 |
+
Lenguajes más modernos pueden ayudarte a resolver esto,
|
| 320 |
+
|
| 321 |
+
00:05:16.490 --> 00:05:18.650
|
| 322 |
+
pero en seis C más más este control
|
| 323 |
+
|
| 324 |
+
00:05:18.650 --> 00:05:22.250
|
| 325 |
+
se realiza manualmente. Como mencionamos, el HEP es
|
| 326 |
+
|
| 327 |
+
00:05:22.250 --> 00:05:24.970
|
| 328 |
+
controlado por el programador. Todas las funciones de
|
| 329 |
+
|
| 330 |
+
00:05:24.970 --> 00:05:27.735
|
| 331 |
+
almacenamiento de memoria dinámica que tu programes, si,
|
| 332 |
+
|
| 333 |
+
00:05:27.735 --> 00:05:30.215
|
| 334 |
+
por ejemplo, es recoger datos del usuario, van
|
| 335 |
+
|
| 336 |
+
00:05:30.215 --> 00:05:33.415
|
| 337 |
+
allí. Y el stack es gestionado principalmente por
|
| 338 |
+
|
| 339 |
+
00:05:33.415 --> 00:05:36.155
|
| 340 |
+
el compilador, y es que cuando el compilador
|
| 341 |
+
|
| 342 |
+
00:05:36.775 --> 00:05:39.895
|
| 343 |
+
está interpretando cómo hacemos, por ejemplo, diferentes bloques
|
| 344 |
+
|
| 345 |
+
00:05:39.895 --> 00:05:42.120
|
| 346 |
+
o funciones de código, lo que va a
|
| 347 |
+
|
| 348 |
+
00:05:42.120 --> 00:05:45.480
|
| 349 |
+
hacer es mantener como cierta memoria de desde
|
| 350 |
+
|
| 351 |
+
00:05:45.480 --> 00:05:47.960
|
| 352 |
+
dónde se llamó cierta función, qué datos contiene
|
| 353 |
+
|
| 354 |
+
00:05:47.960 --> 00:05:51.240
|
| 355 |
+
internamente y todo esto lo va almacenando durante
|
| 356 |
+
|
| 357 |
+
00:05:51.240 --> 00:05:54.135
|
| 358 |
+
la ejecución en el stack. Esta es la
|
| 359 |
+
|
| 360 |
+
00:05:54.135 --> 00:05:56.315
|
| 361 |
+
forma en que se segmenta la memoria dentro
|
| 362 |
+
|
| 363 |
+
00:05:56.495 --> 00:06:00.535
|
| 364 |
+
de tu computadora. Con esto, ahora puedes entender
|
| 365 |
+
|
| 366 |
+
00:06:00.535 --> 00:06:04.794
|
| 367 |
+
cómo funciona internamente la computadora, cómo almacena los
|
| 368 |
+
|
| 369 |
+
00:06:04.935 --> 00:06:07.735
|
| 370 |
+
datos y cómo organiza las diferentes secciones de
|
| 371 |
+
|
| 372 |
+
00:06:07.735 --> 00:06:10.240
|
| 373 |
+
memoria. Vamos a aprender en la siguiente clase
|
| 374 |
+
|
| 375 |
+
00:06:10.539 --> 00:06:12.699
|
| 376 |
+
el uso de punteros, que es la manera
|
| 377 |
+
|
| 378 |
+
00:06:12.699 --> 00:06:14.860
|
| 379 |
+
que nos dan los lenguajes de programación, como
|
| 380 |
+
|
| 381 |
+
00:06:14.860 --> 00:06:17.099
|
| 382 |
+
seis C más más, de acceder a los
|
| 383 |
+
|
| 384 |
+
00:06:17.099 --> 00:06:20.479
|
| 385 |
+
diferentes registros de memoria y controlarlos.
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/01-slides-del-curso-de-poo-con-c_f444e705-c951-4d68-b9c0-907667481c77.pdf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bae89419c36f362ea3758080e3e2c1723a211f550c9051c7c2495f5a5a9225e6
|
| 3 |
+
size 449148
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Punteros en C Manejo y Uso de Memoria Dinámica.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:196e9c43c94439e2a20db518fce74629eab80c0d8f08b4ecea5928d1df7aa23b
|
| 3 |
+
size 53579406
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Punteros en C Manejo y Uso de Memoria Dinámica.vtt
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.120 --> 00:00:05.120
|
| 4 |
+
Ahora que ya sabes cómo se almacenan los
|
| 5 |
+
|
| 6 |
+
00:00:05.120 --> 00:00:07.440
|
| 7 |
+
programas en memoria y cómo se segmenta la
|
| 8 |
+
|
| 9 |
+
00:00:07.440 --> 00:00:09.519
|
| 10 |
+
memoria de un programa, vamos a comenzar a
|
| 11 |
+
|
| 12 |
+
00:00:09.519 --> 00:00:12.320
|
| 13 |
+
hablar sobre los punteros. Los punteros son un
|
| 14 |
+
|
| 15 |
+
00:00:12.320 --> 00:00:15.360
|
| 16 |
+
tipo especial de variable que almacena direcciones de
|
| 17 |
+
|
| 18 |
+
00:00:15.360 --> 00:00:18.505
|
| 19 |
+
memoria. Estos nos van a servir muchísimo para
|
| 20 |
+
|
| 21 |
+
00:00:18.505 --> 00:00:21.785
|
| 22 |
+
el manejo de la memoria dinámica. La memoria
|
| 23 |
+
|
| 24 |
+
00:00:21.785 --> 00:00:23.945
|
| 25 |
+
dinámica es esta que puede cambiar de tamaño
|
| 26 |
+
|
| 27 |
+
00:00:23.945 --> 00:00:25.805
|
| 28 |
+
a lo largo de la ejecución del programa.
|
| 29 |
+
|
| 30 |
+
00:00:26.425 --> 00:00:29.224
|
| 31 |
+
Vamos a ver cómo funcionan internamente para la
|
| 32 |
+
|
| 33 |
+
00:00:29.224 --> 00:00:33.510
|
| 34 |
+
computadora. Como puedes ver en pantalla, la estructura
|
| 35 |
+
|
| 36 |
+
00:00:33.510 --> 00:00:36.090
|
| 37 |
+
básica de la RAM es como una tabla
|
| 38 |
+
|
| 39 |
+
00:00:36.230 --> 00:00:38.970
|
| 40 |
+
o como una fila o lista de cosas
|
| 41 |
+
|
| 42 |
+
00:00:39.270 --> 00:00:42.629
|
| 43 |
+
que vas a almacenar. Cada uno de los
|
| 44 |
+
|
| 45 |
+
00:00:42.629 --> 00:00:44.965
|
| 46 |
+
elementos, cada una de las celdas de esta
|
| 47 |
+
|
| 48 |
+
00:00:44.965 --> 00:00:47.685
|
| 49 |
+
pila de cosas que puedes almacenar, que son
|
| 50 |
+
|
| 51 |
+
00:00:47.685 --> 00:00:51.045
|
| 52 |
+
donde se almacenan tus valores, tiene asignada una
|
| 53 |
+
|
| 54 |
+
00:00:51.045 --> 00:00:53.605
|
| 55 |
+
dirección de memoria. Esa dirección es única a
|
| 56 |
+
|
| 57 |
+
00:00:53.605 --> 00:00:56.850
|
| 58 |
+
lo largo de toda tu computadora e irrepetible.
|
| 59 |
+
|
| 60 |
+
00:00:57.710 --> 00:01:00.430
|
| 61 |
+
Entonces, cada una de estas direcciones puede ser
|
| 62 |
+
|
| 63 |
+
00:01:00.430 --> 00:01:04.989
|
| 64 |
+
accedida por tu programa. Si quieres almacenar una
|
| 65 |
+
|
| 66 |
+
00:01:04.989 --> 00:01:08.350
|
| 67 |
+
variable tipo char, por ejemplo, la letra a
|
| 68 |
+
|
| 69 |
+
00:01:08.350 --> 00:01:10.065
|
| 70 |
+
dentro de tu memoria RAM, la forma en
|
| 71 |
+
|
| 72 |
+
00:01:10.065 --> 00:01:12.545
|
| 73 |
+
que funcionaría sería como lo estás viendo en
|
| 74 |
+
|
| 75 |
+
00:01:12.545 --> 00:01:15.345
|
| 76 |
+
pantalla. Estarías reservando un espacio en la memoria
|
| 77 |
+
|
| 78 |
+
00:01:15.345 --> 00:01:18.145
|
| 79 |
+
RAM, tu compilador puede saber que se trata
|
| 80 |
+
|
| 81 |
+
00:01:18.145 --> 00:01:20.385
|
| 82 |
+
de una letra gracias a que lo indicaste
|
| 83 |
+
|
| 84 |
+
00:01:20.385 --> 00:01:23.230
|
| 85 |
+
en el tipo char. El igual hace una
|
| 86 |
+
|
| 87 |
+
00:01:23.230 --> 00:01:25.390
|
| 88 |
+
asignación, así que sabe que ese valor es
|
| 89 |
+
|
| 90 |
+
00:01:25.390 --> 00:01:27.250
|
| 91 |
+
el que va a almacenar en ese espacio
|
| 92 |
+
|
| 93 |
+
00:01:27.670 --> 00:01:31.310
|
| 94 |
+
y, en este momento, por ejemplo, estarías almacenando
|
| 95 |
+
|
| 96 |
+
00:01:31.310 --> 00:01:33.950
|
| 97 |
+
la letra a en la dirección cero x
|
| 98 |
+
|
| 99 |
+
00:01:33.950 --> 00:01:36.935
|
| 100 |
+
cero cero cero uno, pero la forma en
|
| 101 |
+
|
| 102 |
+
00:01:36.935 --> 00:01:39.335
|
| 103 |
+
la que el lenguaje evita que tengas que
|
| 104 |
+
|
| 105 |
+
00:01:39.335 --> 00:01:41.655
|
| 106 |
+
aprenderte direcciones de memoria es usando, pues, el
|
| 107 |
+
|
| 108 |
+
00:01:41.655 --> 00:01:44.295
|
| 109 |
+
nombre de tu variable y, entonces, estaríamos hablando
|
| 110 |
+
|
| 111 |
+
00:01:44.295 --> 00:01:47.195
|
| 112 |
+
de la variable letra. Así es como se
|
| 113 |
+
|
| 114 |
+
00:01:47.255 --> 00:01:50.375
|
| 115 |
+
aparta la memoria en la computadora para cualquier
|
| 116 |
+
|
| 117 |
+
00:01:50.375 --> 00:01:52.880
|
| 118 |
+
variable, Puede ser un entero, una cadena de
|
| 119 |
+
|
| 120 |
+
00:01:52.880 --> 00:01:56.000
|
| 121 |
+
texto, etcétera. Vamos a crear una variable tipo
|
| 122 |
+
|
| 123 |
+
00:01:56.000 --> 00:01:58.880
|
| 124 |
+
puntero. ¿Eso cómo sería? Bueno, C más más
|
| 125 |
+
|
| 126 |
+
00:01:58.880 --> 00:02:01.840
|
| 127 |
+
nos permite utilizar estos dos símbolos, que son
|
| 128 |
+
|
| 129 |
+
00:02:01.840 --> 00:02:05.345
|
| 130 |
+
el asterisco y el ampersand, para realizar esta
|
| 131 |
+
|
| 132 |
+
00:02:06.924 --> 00:02:10.525
|
| 133 |
+
sintaxis. En este caso, si queremos almacenar un
|
| 134 |
+
|
| 135 |
+
00:02:10.525 --> 00:02:13.345
|
| 136 |
+
puntero a una variable que almacena un carácter,
|
| 137 |
+
|
| 138 |
+
00:02:13.645 --> 00:02:16.525
|
| 139 |
+
podemos utilizar el tipo char, pero tú podrías
|
| 140 |
+
|
| 141 |
+
00:02:16.525 --> 00:02:19.360
|
| 142 |
+
utilizar cualquier tipo de dato dependiendo de lo
|
| 143 |
+
|
| 144 |
+
00:02:19.360 --> 00:02:23.680
|
| 145 |
+
que quieras almacenar. Igualmente, para indicarle a C
|
| 146 |
+
|
| 147 |
+
00:02:23.680 --> 00:02:25.860
|
| 148 |
+
más más que estamos hablando de un puntero,
|
| 149 |
+
|
| 150 |
+
00:02:26.000 --> 00:02:29.380
|
| 151 |
+
utilizaremos el nombre de la variable, pero iniciando
|
| 152 |
+
|
| 153 |
+
00:02:29.440 --> 00:02:32.365
|
| 154 |
+
con un asterisco. De esta manera, podrá reconocer
|
| 155 |
+
|
| 156 |
+
00:02:32.365 --> 00:02:36.365
|
| 157 |
+
que tratamos punteros, que tratamos direcciones de memoria.
|
| 158 |
+
|
| 159 |
+
00:02:36.365 --> 00:02:39.405
|
| 160 |
+
Y durante la asignación, puedes notar que estamos
|
| 161 |
+
|
| 162 |
+
00:02:39.405 --> 00:02:43.645
|
| 163 |
+
utilizando el símbolo de ampersand para indicar que
|
| 164 |
+
|
| 165 |
+
00:02:43.645 --> 00:02:45.965
|
| 166 |
+
queremos obtener la dirección de memoria de la
|
| 167 |
+
|
| 168 |
+
00:02:45.965 --> 00:02:48.670
|
| 169 |
+
variable letra. Esto es lo que significa esta
|
| 170 |
+
|
| 171 |
+
00:02:48.670 --> 00:02:50.530
|
| 172 |
+
línea de código que estamos viendo en pantalla.
|
| 173 |
+
|
| 174 |
+
00:02:50.670 --> 00:02:52.990
|
| 175 |
+
Y en resumen, lo que estamos haciendo es
|
| 176 |
+
|
| 177 |
+
00:02:52.990 --> 00:02:59.070
|
| 178 |
+
lo siguiente. Estamos tomando la variable puntero, estamos
|
| 179 |
+
|
| 180 |
+
00:02:59.070 --> 00:03:00.990
|
| 181 |
+
reservando un espacio de memoria que en este
|
| 182 |
+
|
| 183 |
+
00:03:00.990 --> 00:03:03.815
|
| 184 |
+
caso es cero x cero cero tres y
|
| 185 |
+
|
| 186 |
+
00:03:03.815 --> 00:03:06.614
|
| 187 |
+
le estamos asignando un valor, y ese valor
|
| 188 |
+
|
| 189 |
+
00:03:06.614 --> 00:03:09.095
|
| 190 |
+
es la dirección de memoria de la variable
|
| 191 |
+
|
| 192 |
+
00:03:09.095 --> 00:03:11.415
|
| 193 |
+
letra, en este caso, cero x cero cero
|
| 194 |
+
|
| 195 |
+
00:03:11.415 --> 00:03:14.235
|
| 196 |
+
uno. Así es como funcionan los punteros internamente.
|
| 197 |
+
|
| 198 |
+
00:03:14.570 --> 00:03:16.330
|
| 199 |
+
Así como tú le asignaste un valor a
|
| 200 |
+
|
| 201 |
+
00:03:16.330 --> 00:03:18.970
|
| 202 |
+
la variable puntero, que en este momento contiene
|
| 203 |
+
|
| 204 |
+
00:03:18.970 --> 00:03:21.850
|
| 205 |
+
la dirección de memoria de la letra a,
|
| 206 |
+
|
| 207 |
+
00:03:21.850 --> 00:03:24.650
|
| 208 |
+
podrías reemplazar ese valor igual que con cualquier
|
| 209 |
+
|
| 210 |
+
00:03:24.650 --> 00:03:27.770
|
| 211 |
+
otra variable para que almacene otras direcciones de
|
| 212 |
+
|
| 213 |
+
00:03:27.770 --> 00:03:32.105
|
| 214 |
+
memoria. Algo interesante es que, si tú estás
|
| 215 |
+
|
| 216 |
+
00:03:32.165 --> 00:03:34.805
|
| 217 |
+
con la variable puntero apuntando a la dirección
|
| 218 |
+
|
| 219 |
+
00:03:34.805 --> 00:03:38.245
|
| 220 |
+
de la memoria cero cero uno y el
|
| 221 |
+
|
| 222 |
+
00:03:38.245 --> 00:03:42.165
|
| 223 |
+
valor cambia, entonces, por medio de ese puntero
|
| 224 |
+
|
| 225 |
+
00:03:42.165 --> 00:03:44.960
|
| 226 |
+
también notarás el cambio del valor. Es decir,
|
| 227 |
+
|
| 228 |
+
00:03:45.180 --> 00:03:48.140
|
| 229 |
+
podrás obtener un valor por medio de su
|
| 230 |
+
|
| 231 |
+
00:03:48.140 --> 00:03:50.640
|
| 232 |
+
referencia de dirección en lugar de leer directamente
|
| 233 |
+
|
| 234 |
+
00:03:50.780 --> 00:03:54.480
|
| 235 |
+
el valor. La forma en la que funciona,
|
| 236 |
+
|
| 237 |
+
00:03:54.620 --> 00:03:57.584
|
| 238 |
+
pues es la siguiente. Si yo tuviera un
|
| 239 |
+
|
| 240 |
+
00:03:57.704 --> 00:04:02.145
|
| 241 |
+
en mi código, por ejemplo, el ampersand letra,
|
| 242 |
+
|
| 243 |
+
00:04:02.205 --> 00:04:04.845
|
| 244 |
+
esto sería igual a la dirección cero cero
|
| 245 |
+
|
| 246 |
+
00:04:04.845 --> 00:04:08.925
|
| 247 |
+
uno. Si yo quisiera hacer una comparación con
|
| 248 |
+
|
| 249 |
+
00:04:08.925 --> 00:04:11.005
|
| 250 |
+
un if o una comparación lógica de cualquier
|
| 251 |
+
|
| 252 |
+
00:04:11.005 --> 00:04:13.420
|
| 253 |
+
tipo, yo podría darme cuenta que si yo
|
| 254 |
+
|
| 255 |
+
00:04:13.420 --> 00:04:15.420
|
| 256 |
+
veo el valor de la variable puntero sin
|
| 257 |
+
|
| 258 |
+
00:04:15.420 --> 00:04:19.040
|
| 259 |
+
asterisco igual a cero cero uno, eso sería
|
| 260 |
+
|
| 261 |
+
00:04:19.100 --> 00:04:23.340
|
| 262 |
+
verdadero. Otra forma de acceder a estas variables
|
| 263 |
+
|
| 264 |
+
00:04:23.340 --> 00:04:26.655
|
| 265 |
+
es utilizando el asterisco. Por ejemplo, yo notaría
|
| 266 |
+
|
| 267 |
+
00:04:26.655 --> 00:04:29.375
|
| 268 |
+
que si yo uso asterisco puntero, tengo el
|
| 269 |
+
|
| 270 |
+
00:04:29.375 --> 00:04:32.915
|
| 271 |
+
valor a como carácter, y si yo utilizo
|
| 272 |
+
|
| 273 |
+
00:04:33.055 --> 00:04:36.035
|
| 274 |
+
el carácter ampersant antes de la palabra puntero,
|
| 275 |
+
|
| 276 |
+
00:04:36.415 --> 00:04:39.400
|
| 277 |
+
estoy obteniendo la dirección de memoria, pero del
|
| 278 |
+
|
| 279 |
+
00:04:39.400 --> 00:04:42.840
|
| 280 |
+
puntero, es decir, cero cero tres. Sé que
|
| 281 |
+
|
| 282 |
+
00:04:42.840 --> 00:04:45.639
|
| 283 |
+
esto puede sonar un poco confuso, pero lo
|
| 284 |
+
|
| 285 |
+
00:04:45.639 --> 00:04:47.720
|
| 286 |
+
vamos a aclarar mucho más cuando lo veamos
|
| 287 |
+
|
| 288 |
+
00:04:47.720 --> 00:04:50.040
|
| 289 |
+
en código. Para eso, te invito a la
|
| 290 |
+
|
| 291 |
+
00:04:50.040 --> 00:04:50.794
|
| 292 |
+
próxima clase.
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/02-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Uso de Punteros en C Variables y Memoria Dinámica.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:990f893d1b943e9280983c04f85735b1d0d82cccc4f3bd4a32dfc0202a76dfe5
|
| 3 |
+
size 56911668
|
subir/Curso de Programación Orientada a Objetos con C/01-Memoria dinámica/03-Uso de Punteros en C Variables y Memoria Dinámica.vtt
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.040 --> 00:00:05.440
|
| 4 |
+
Ahora que ya sabes cómo funcionan teóricamente los
|
| 5 |
+
|
| 6 |
+
00:00:05.440 --> 00:00:07.520
|
| 7 |
+
punteros y lo que son, vamos a comenzar
|
| 8 |
+
|
| 9 |
+
00:00:07.520 --> 00:00:10.559
|
| 10 |
+
a utilizarlos en ejemplos de código con el
|
| 11 |
+
|
| 12 |
+
00:00:10.559 --> 00:00:13.519
|
| 13 |
+
ejemplo de la clase anterior. Vamos a realizar
|
| 14 |
+
|
| 15 |
+
00:00:13.519 --> 00:00:16.255
|
| 16 |
+
nuestro código con punteros. En primer lugar, quiero
|
| 17 |
+
|
| 18 |
+
00:00:16.255 --> 00:00:19.695
|
| 19 |
+
realizar el ejemplo de la clase anterior, por
|
| 20 |
+
|
| 21 |
+
00:00:19.695 --> 00:00:22.335
|
| 22 |
+
lo que vamos a crear nuestra variable tipo
|
| 23 |
+
|
| 24 |
+
00:00:22.335 --> 00:00:25.855
|
| 25 |
+
carácter que se llama letra y que va
|
| 26 |
+
|
| 27 |
+
00:00:25.855 --> 00:00:30.759
|
| 28 |
+
a contener precisamente la letra a. A continuación,
|
| 29 |
+
|
| 30 |
+
00:00:30.980 --> 00:00:33.160
|
| 31 |
+
vamos a crear una variable de tipo puntero
|
| 32 |
+
|
| 33 |
+
00:00:33.940 --> 00:00:36.260
|
| 34 |
+
para un carácter que se va a llamar
|
| 35 |
+
|
| 36 |
+
00:00:36.260 --> 00:00:40.980
|
| 37 |
+
puntero y va a almacenar el valor del
|
| 38 |
+
|
| 39 |
+
00:00:40.980 --> 00:00:46.114
|
| 40 |
+
puntero de la variable letra. Ahora, vamos a
|
| 41 |
+
|
| 42 |
+
00:00:46.114 --> 00:00:49.315
|
| 43 |
+
comenzar a inspeccionar cuáles son los valores de
|
| 44 |
+
|
| 45 |
+
00:00:49.315 --> 00:00:52.135
|
| 46 |
+
cada uno de estas variables y cómo obtenemos
|
| 47 |
+
|
| 48 |
+
00:00:52.675 --> 00:00:55.954
|
| 49 |
+
los diferentes datos dependiendo de lo que deseemos
|
| 50 |
+
|
| 51 |
+
00:00:55.954 --> 00:00:58.114
|
| 52 |
+
obtener, sobre cuál es su dirección, cuál es
|
| 53 |
+
|
| 54 |
+
00:00:58.114 --> 00:01:01.410
|
| 55 |
+
su valor, etcétera. Vamos a hacerlo mostrándolo en
|
| 56 |
+
|
| 57 |
+
00:01:01.410 --> 00:01:03.670
|
| 58 |
+
la pantalla de la terminal con c out.
|
| 59 |
+
|
| 60 |
+
00:01:03.809 --> 00:01:05.970
|
| 61 |
+
Veamos que contiene el valor de la variable
|
| 62 |
+
|
| 63 |
+
00:01:05.970 --> 00:01:13.284
|
| 64 |
+
letra. Vamos a ejecutarlo con f seis. Ahora
|
| 65 |
+
|
| 66 |
+
00:01:13.424 --> 00:01:16.064
|
| 67 |
+
se está ejecutando nuestro código y listo, ahí
|
| 68 |
+
|
| 69 |
+
00:01:16.064 --> 00:01:18.865
|
| 70 |
+
está. Tenemos nuestra letra a como salida de
|
| 71 |
+
|
| 72 |
+
00:01:18.865 --> 00:01:22.465
|
| 73 |
+
la terminal. Como puedes ver, vamos bien y
|
| 74 |
+
|
| 75 |
+
00:01:22.465 --> 00:01:25.204
|
| 76 |
+
esto es lo que esperaríamos de un inicio.
|
| 77 |
+
|
| 78 |
+
00:01:25.970 --> 00:01:28.610
|
| 79 |
+
Pero, ¿qué pasaría si yo quisiera mostrar la
|
| 80 |
+
|
| 81 |
+
00:01:28.610 --> 00:01:31.330
|
| 82 |
+
dirección de memoria de la variable letra? Bueno,
|
| 83 |
+
|
| 84 |
+
00:01:31.330 --> 00:01:34.690
|
| 85 |
+
tendría yo que utilizar ampersand. Vamos a ejecutarlo
|
| 86 |
+
|
| 87 |
+
00:01:34.690 --> 00:01:37.330
|
| 88 |
+
y vamos a ver qué nos devuelve. Aquí
|
| 89 |
+
|
| 90 |
+
00:01:37.330 --> 00:01:40.795
|
| 91 |
+
tienes. Esto es una serie de caracteres extraños
|
| 92 |
+
|
| 93 |
+
00:01:41.015 --> 00:01:43.015
|
| 94 |
+
y la lo que tú te preguntarás tal
|
| 95 |
+
|
| 96 |
+
00:01:43.015 --> 00:01:44.534
|
| 97 |
+
vez es como, ¿qué es lo que está
|
| 98 |
+
|
| 99 |
+
00:01:44.534 --> 00:01:47.674
|
| 100 |
+
pasando aquí? Bueno, es muy simple. Como nuestro
|
| 101 |
+
|
| 102 |
+
00:01:47.975 --> 00:01:52.615
|
| 103 |
+
lenguaje de programación interpreta el puntero a partir
|
| 104 |
+
|
| 105 |
+
00:01:52.615 --> 00:01:54.455
|
| 106 |
+
de que es un carácter, lo hace de
|
| 107 |
+
|
| 108 |
+
00:01:54.455 --> 00:01:56.600
|
| 109 |
+
forma un poquito rara. Lo que vamos a
|
| 110 |
+
|
| 111 |
+
00:01:56.600 --> 00:01:58.560
|
| 112 |
+
hacer es ayudarle a comprender qué nos lo
|
| 113 |
+
|
| 114 |
+
00:01:58.560 --> 00:02:00.159
|
| 115 |
+
quiere, qué nos lo tiene que mostrar como
|
| 116 |
+
|
| 117 |
+
00:02:00.159 --> 00:02:03.700
|
| 118 |
+
número, así que vamos a hacer una conversión.
|
| 119 |
+
|
| 120 |
+
00:02:03.759 --> 00:02:06.720
|
| 121 |
+
Para esto, podemos utilizar la siguiente sintaxis en
|
| 122 |
+
|
| 123 |
+
00:02:06.720 --> 00:02:09.039
|
| 124 |
+
C más más, que es utilizar, por ejemplo,
|
| 125 |
+
|
| 126 |
+
00:02:09.039 --> 00:02:11.985
|
| 127 |
+
un paréntesis antes de la variable que queremos
|
| 128 |
+
|
| 129 |
+
00:02:12.685 --> 00:02:15.665
|
| 130 |
+
convertir de tipo, y vamos a poder convertir
|
| 131 |
+
|
| 132 |
+
00:02:15.725 --> 00:02:17.485
|
| 133 |
+
esto de un carácter o de un puntero
|
| 134 |
+
|
| 135 |
+
00:02:17.485 --> 00:02:19.965
|
| 136 |
+
de carácter a uno de entero. Y lo
|
| 137 |
+
|
| 138 |
+
00:02:19.965 --> 00:02:22.385
|
| 139 |
+
que tenemos que poner entre paréntesis es justo
|
| 140 |
+
|
| 141 |
+
00:02:22.490 --> 00:02:24.030
|
| 142 |
+
cuál es el tipo en el que queremos
|
| 143 |
+
|
| 144 |
+
00:02:24.250 --> 00:02:26.970
|
| 145 |
+
convertirlo. Entonces, si queremos convertirlo en un puntero
|
| 146 |
+
|
| 147 |
+
00:02:26.970 --> 00:02:30.830
|
| 148 |
+
de entero, sería así, le decimos int asterisco.
|
| 149 |
+
|
| 150 |
+
00:02:32.010 --> 00:02:33.930
|
| 151 |
+
Con esto, una vez que ejecutemos de nuevo
|
| 152 |
+
|
| 153 |
+
00:02:33.930 --> 00:02:37.745
|
| 154 |
+
nuestro programa, obtenemos una dirección de memoria que
|
| 155 |
+
|
| 156 |
+
00:02:37.745 --> 00:02:41.425
|
| 157 |
+
está en hexadecimal. Es un sistema numérico donde
|
| 158 |
+
|
| 159 |
+
00:02:41.425 --> 00:02:44.385
|
| 160 |
+
podemos al, pues representar código binario de una
|
| 161 |
+
|
| 162 |
+
00:02:44.385 --> 00:02:47.025
|
| 163 |
+
forma más compacta y que, por lo general,
|
| 164 |
+
|
| 165 |
+
00:02:47.025 --> 00:02:49.925
|
| 166 |
+
empieza así, cero x y el valor numérico.
|
| 167 |
+
|
| 168 |
+
00:02:50.920 --> 00:02:54.280
|
| 169 |
+
Como puedes ver aquí, pues, mi letra a
|
| 170 |
+
|
| 171 |
+
00:02:54.280 --> 00:02:57.400
|
| 172 |
+
está almacenada en la dirección de memoria que
|
| 173 |
+
|
| 174 |
+
00:02:57.400 --> 00:03:00.459
|
| 175 |
+
comienza con siete FFY termina con d siete,
|
| 176 |
+
|
| 177 |
+
00:03:00.840 --> 00:03:04.200
|
| 178 |
+
¿ok? Esto puede cambiar dependiendo de tu computadora,
|
| 179 |
+
|
| 180 |
+
00:03:04.200 --> 00:03:06.195
|
| 181 |
+
por supuesto. La dirección de memoria va a
|
| 182 |
+
|
| 183 |
+
00:03:06.195 --> 00:03:09.875
|
| 184 |
+
depender de cuántos programas tengas abiertos y el
|
| 185 |
+
|
| 186 |
+
00:03:09.875 --> 00:03:12.435
|
| 187 |
+
momento de ejecución de tu código. Pero lo
|
| 188 |
+
|
| 189 |
+
00:03:12.435 --> 00:03:14.515
|
| 190 |
+
que es importante es que puedes observar que
|
| 191 |
+
|
| 192 |
+
00:03:14.515 --> 00:03:16.755
|
| 193 |
+
es una memoria, es una dirección de memoria
|
| 194 |
+
|
| 195 |
+
00:03:16.755 --> 00:03:19.500
|
| 196 |
+
que está en hexadecimal. Y como lo puedes
|
| 197 |
+
|
| 198 |
+
00:03:19.500 --> 00:03:22.459
|
| 199 |
+
estar pensando, ahora el valor de amperesant letra
|
| 200 |
+
|
| 201 |
+
00:03:22.459 --> 00:03:24.959
|
| 202 |
+
también está almacenado dentro de la variable puntero.
|
| 203 |
+
|
| 204 |
+
00:03:25.180 --> 00:03:27.019
|
| 205 |
+
Vamos a ver cómo es es que esto
|
| 206 |
+
|
| 207 |
+
00:03:27.019 --> 00:03:29.180
|
| 208 |
+
sucede. Voy a imprimir el valor de la
|
| 209 |
+
|
| 210 |
+
00:03:29.180 --> 00:03:32.745
|
| 211 |
+
variable puntero en la terminal, no sin antes
|
| 212 |
+
|
| 213 |
+
00:03:32.745 --> 00:03:34.665
|
| 214 |
+
terminar la línea anterior con un, pues, con
|
| 215 |
+
|
| 216 |
+
00:03:34.665 --> 00:03:35.945
|
| 217 |
+
un cambio de línea para que se vea
|
| 218 |
+
|
| 219 |
+
00:03:35.945 --> 00:03:41.465
|
| 220 |
+
en dos líneas diferentes la salida. Ahora voy
|
| 221 |
+
|
| 222 |
+
00:03:41.465 --> 00:03:44.400
|
| 223 |
+
a ejecutar este programa y, como puedes ver,
|
| 224 |
+
|
| 225 |
+
00:03:44.480 --> 00:03:46.879
|
| 226 |
+
pues tengo mi salida, pero tengo un error
|
| 227 |
+
|
| 228 |
+
00:03:46.879 --> 00:03:50.560
|
| 229 |
+
porque me faltó convertirlo a valor de entero.
|
| 230 |
+
|
| 231 |
+
00:03:50.560 --> 00:03:52.640
|
| 232 |
+
Entonces, voy a hacer la conversión y voy
|
| 233 |
+
|
| 234 |
+
00:03:52.640 --> 00:03:56.079
|
| 235 |
+
a volver a ejecutar mi programa. Listo, como
|
| 236 |
+
|
| 237 |
+
00:03:56.079 --> 00:03:58.879
|
| 238 |
+
puedes ver, tanto ampersand letra como la variable
|
| 239 |
+
|
| 240 |
+
00:03:58.879 --> 00:04:02.085
|
| 241 |
+
puntero están almacenando la misma dirección de memoria,
|
| 242 |
+
|
| 243 |
+
00:04:02.085 --> 00:04:04.905
|
| 244 |
+
o mejor dicho, la variable puntero está almacenando
|
| 245 |
+
|
| 246 |
+
00:04:05.525 --> 00:04:09.685
|
| 247 |
+
la dirección de memoria de la variable letra.
|
| 248 |
+
|
| 249 |
+
00:04:09.685 --> 00:04:12.645
|
| 250 |
+
Otra cosa que podemos hacer es acceder directamente
|
| 251 |
+
|
| 252 |
+
00:04:12.645 --> 00:04:15.770
|
| 253 |
+
al valor de la variable letra desde su
|
| 254 |
+
|
| 255 |
+
00:04:15.770 --> 00:04:18.570
|
| 256 |
+
puntero. La forma de hacerlo sería utilizar el
|
| 257 |
+
|
| 258 |
+
00:04:18.570 --> 00:04:21.290
|
| 259 |
+
asterisco seguido de el nombre de la variable,
|
| 260 |
+
|
| 261 |
+
00:04:21.290 --> 00:04:23.530
|
| 262 |
+
por ejemplo, que podría acceder al valor de
|
| 263 |
+
|
| 264 |
+
00:04:23.530 --> 00:04:28.444
|
| 265 |
+
la letra a directamente con asterisco puntero. Y
|
| 266 |
+
|
| 267 |
+
00:04:28.444 --> 00:04:30.525
|
| 268 |
+
voy a agregar un cambio de línea en
|
| 269 |
+
|
| 270 |
+
00:04:30.525 --> 00:04:37.185
|
| 271 |
+
el renglón anterior y ejecutamos. Y ahí está,
|
| 272 |
+
|
| 273 |
+
00:04:37.245 --> 00:04:40.444
|
| 274 |
+
ahora estás viendo que tanto el puntero como
|
| 275 |
+
|
| 276 |
+
00:04:40.444 --> 00:04:42.685
|
| 277 |
+
Ampers and puntero tienen el mismo valor, pero
|
| 278 |
+
|
| 279 |
+
00:04:42.685 --> 00:04:46.190
|
| 280 |
+
además el el valor que está accediendo indirectamente
|
| 281 |
+
|
| 282 |
+
00:04:46.490 --> 00:04:49.530
|
| 283 |
+
puntero es la letra a. Esto es gracias
|
| 284 |
+
|
| 285 |
+
00:04:49.530 --> 00:04:52.490
|
| 286 |
+
a la capacidad de memoria dinámica de seis
|
| 287 |
+
|
| 288 |
+
00:04:52.490 --> 00:04:54.730
|
| 289 |
+
e más más y lo que estamos haciendo
|
| 290 |
+
|
| 291 |
+
00:04:54.730 --> 00:04:58.735
|
| 292 |
+
es directamente apuntar el puntero hasta el registro
|
| 293 |
+
|
| 294 |
+
00:04:58.735 --> 00:05:03.975
|
| 295 |
+
de la variable letra. Con esto, podemos realizar
|
| 296 |
+
|
| 297 |
+
00:05:03.975 --> 00:05:06.615
|
| 298 |
+
muchísimas operaciones de memoria dinámica, lo que nos
|
| 299 |
+
|
| 300 |
+
00:05:06.615 --> 00:05:10.630
|
| 301 |
+
permitirá, utilizando una misma variable, acceder a diferentes
|
| 302 |
+
|
| 303 |
+
00:05:10.630 --> 00:05:12.390
|
| 304 |
+
lugares de la memoria del programa o de
|
| 305 |
+
|
| 306 |
+
00:05:12.390 --> 00:05:16.150
|
| 307 |
+
la memoria de nuestra computadora para poder realizar
|
| 308 |
+
|
| 309 |
+
00:05:16.150 --> 00:05:19.670
|
| 310 |
+
todas las operaciones que nos sean útiles. Y
|
| 311 |
+
|
| 312 |
+
00:05:19.670 --> 00:05:22.950
|
| 313 |
+
con esto podemos realizar bastantes operaciones que vamos
|
| 314 |
+
|
| 315 |
+
00:05:22.950 --> 00:05:25.205
|
| 316 |
+
a ver más adelante. Nos vemos en la
|
| 317 |
+
|
| 318 |
+
00:05:25.205 --> 00:05:28.905
|
| 319 |
+
próxima clase, donde utilizaremos nuestros conocimientos de variables,
|
| 320 |
+
|
| 321 |
+
00:05:29.445 --> 00:05:32.585
|
| 322 |
+
estructuras y punteros para poder generar nuestras propias
|
| 323 |
+
|
| 324 |
+
00:05:32.645 --> 00:05:33.705
|
| 325 |
+
estructuras de datos.
|
subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Estructuras de Datos Personalizadas en C.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e16090e37bef04d9410e6baddc2a2daa7431287701e0207ec32c55589feccd7d
|
| 3 |
+
size 59942384
|
subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Estructuras de Datos Personalizadas en C.vtt
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.120 --> 00:00:05.279
|
| 4 |
+
Vamos a hablar sobre estructuras de datos y
|
| 5 |
+
|
| 6 |
+
00:00:05.279 --> 00:00:08.820
|
| 7 |
+
tipos personalizados. Hasta donde vimos en clases anteriores,
|
| 8 |
+
|
| 9 |
+
00:00:08.960 --> 00:00:12.855
|
| 10 |
+
hemos utilizado variables de tamaño fijo y, si
|
| 11 |
+
|
| 12 |
+
00:00:12.855 --> 00:00:15.455
|
| 13 |
+
queremos crear algo de tamaño variable, pues hemos
|
| 14 |
+
|
| 15 |
+
00:00:15.455 --> 00:00:18.935
|
| 16 |
+
creado listas. Pero estas tienen las limitantes de
|
| 17 |
+
|
| 18 |
+
00:00:18.935 --> 00:00:21.814
|
| 19 |
+
que solamente pueden ser elementos de un mismo
|
| 20 |
+
|
| 21 |
+
00:00:21.814 --> 00:00:25.414
|
| 22 |
+
tipo y que necesitamos, pues realizar algunos trucos
|
| 23 |
+
|
| 24 |
+
00:00:25.414 --> 00:00:28.420
|
| 25 |
+
con ellas. Para poder realizar, por ejemplo, listas
|
| 26 |
+
|
| 27 |
+
00:00:28.420 --> 00:00:30.840
|
| 28 |
+
de caracteres, tuvimos que recurrir a la librería
|
| 29 |
+
|
| 30 |
+
00:00:30.900 --> 00:00:33.700
|
| 31 |
+
string para realizarlo de una mejor manera. Sin
|
| 32 |
+
|
| 33 |
+
00:00:33.700 --> 00:00:37.260
|
| 34 |
+
embargo, existen formas de definir tus propias estructuras
|
| 35 |
+
|
| 36 |
+
00:00:37.260 --> 00:00:40.500
|
| 37 |
+
de datos y tipos personalizados para poder utilizarlos
|
| 38 |
+
|
| 39 |
+
00:00:40.500 --> 00:00:43.434
|
| 40 |
+
durante tu programa y que sea mucho más
|
| 41 |
+
|
| 42 |
+
00:00:43.434 --> 00:00:46.635
|
| 43 |
+
versátil. Esta característica es una de las principales
|
| 44 |
+
|
| 45 |
+
00:00:46.635 --> 00:00:49.295
|
| 46 |
+
características de lenguajes como seis C más más
|
| 47 |
+
|
| 48 |
+
00:00:49.355 --> 00:00:51.515
|
| 49 |
+
y es parte de lo que le da
|
| 50 |
+
|
| 51 |
+
00:00:51.515 --> 00:00:53.594
|
| 52 |
+
la mayor parte, pues, de su potencia y
|
| 53 |
+
|
| 54 |
+
00:00:53.594 --> 00:00:56.790
|
| 55 |
+
funciona gracias a los punteros. Vamos a ver
|
| 56 |
+
|
| 57 |
+
00:00:56.790 --> 00:01:00.890
|
| 58 |
+
este ejemplo que estás viendo en pantalla. Aquí
|
| 59 |
+
|
| 60 |
+
00:01:00.950 --> 00:01:03.510
|
| 61 |
+
creamos una lista de caracteres que se llama
|
| 62 |
+
|
| 63 |
+
00:01:03.510 --> 00:01:06.150
|
| 64 |
+
texto. ¿Cómo sabemos que es una lista? Bueno,
|
| 65 |
+
|
| 66 |
+
00:01:06.150 --> 00:01:08.229
|
| 67 |
+
el compilador lo sabe porque usamos corchetes y
|
| 68 |
+
|
| 69 |
+
00:01:08.229 --> 00:01:10.545
|
| 70 |
+
sabe que es tipo char. Así que cuando
|
| 71 |
+
|
| 72 |
+
00:01:10.545 --> 00:01:12.625
|
| 73 |
+
le pasamos una cadena de texto que dice
|
| 74 |
+
|
| 75 |
+
00:01:12.625 --> 00:01:16.465
|
| 76 |
+
hola, sabe interpretarlo e infiere que es una
|
| 77 |
+
|
| 78 |
+
00:01:16.465 --> 00:01:19.265
|
| 79 |
+
lista de caracteres. Pero una forma más correcta
|
| 80 |
+
|
| 81 |
+
00:01:19.265 --> 00:01:21.844
|
| 82 |
+
de escribirlo para C más más, sin abreviarlo
|
| 83 |
+
|
| 84 |
+
00:01:21.985 --> 00:01:26.240
|
| 85 |
+
de esta manera, sería la siguiente. Esta, utilizando
|
| 86 |
+
|
| 87 |
+
00:01:26.300 --> 00:01:29.260
|
| 88 |
+
comillas simples, separando los elementos por comas y
|
| 89 |
+
|
| 90 |
+
00:01:29.260 --> 00:01:31.980
|
| 91 |
+
siguiendo la sintaxis estándar de cómo deben ser
|
| 92 |
+
|
| 93 |
+
00:01:31.980 --> 00:01:34.380
|
| 94 |
+
las listas. Digamos que la anterior solamente es
|
| 95 |
+
|
| 96 |
+
00:01:34.380 --> 00:01:37.825
|
| 97 |
+
una forma fácil de escribir esto mismo, Pero
|
| 98 |
+
|
| 99 |
+
00:01:37.884 --> 00:01:40.604
|
| 100 |
+
todavía tenemos varias limitantes. Una de ellas es
|
| 101 |
+
|
| 102 |
+
00:01:40.604 --> 00:01:43.485
|
| 103 |
+
que no tenemos, pues, una forma fácil de
|
| 104 |
+
|
| 105 |
+
00:01:43.485 --> 00:01:46.365
|
| 106 |
+
acceder, pues, al tamaño de la lista más
|
| 107 |
+
|
| 108 |
+
00:01:46.365 --> 00:01:49.970
|
| 109 |
+
que realizando size off y otras cosas. Bueno,
|
| 110 |
+
|
| 111 |
+
00:01:50.190 --> 00:01:52.910
|
| 112 |
+
para poder hacer una estructura tan compleja como
|
| 113 |
+
|
| 114 |
+
00:01:52.910 --> 00:01:54.830
|
| 115 |
+
esta, la verdad es que C más más
|
| 116 |
+
|
| 117 |
+
00:01:54.830 --> 00:01:57.790
|
| 118 |
+
lo realiza por medio de almacenar cada una
|
| 119 |
+
|
| 120 |
+
00:01:57.790 --> 00:01:59.470
|
| 121 |
+
de las letras en un espacio de memoria
|
| 122 |
+
|
| 123 |
+
00:01:59.470 --> 00:02:03.475
|
| 124 |
+
distinto. Esto sería el equivalente utilizando punteros. Podemos
|
| 125 |
+
|
| 126 |
+
00:02:03.475 --> 00:02:05.954
|
| 127 |
+
ver cómo creamos una variable tipo puntero, que
|
| 128 |
+
|
| 129 |
+
00:02:05.954 --> 00:02:08.595
|
| 130 |
+
se llama texto, y luego tomamos todas las
|
| 131 |
+
|
| 132 |
+
00:02:08.595 --> 00:02:12.355
|
| 133 |
+
letras de la de la lista hola y
|
| 134 |
+
|
| 135 |
+
00:02:12.355 --> 00:02:14.834
|
| 136 |
+
le decimos que las interprete como punteros de
|
| 137 |
+
|
| 138 |
+
00:02:14.834 --> 00:02:18.290
|
| 139 |
+
carácter. Esto podría leerse más complicado, pero, como
|
| 140 |
+
|
| 141 |
+
00:02:18.290 --> 00:02:21.650
|
| 142 |
+
ya vimos en la clase teórica de cómo
|
| 143 |
+
|
| 144 |
+
00:02:21.650 --> 00:02:24.930
|
| 145 |
+
funcionan las direcciones de memoria, pues se es
|
| 146 |
+
|
| 147 |
+
00:02:24.930 --> 00:02:27.810
|
| 148 |
+
más claro entender que aquí cada letra se
|
| 149 |
+
|
| 150 |
+
00:02:27.810 --> 00:02:30.535
|
| 151 |
+
está almacenando en un registro de memoria. Lo
|
| 152 |
+
|
| 153 |
+
00:02:30.535 --> 00:02:33.015
|
| 154 |
+
que está pasando con este código es lo
|
| 155 |
+
|
| 156 |
+
00:02:33.015 --> 00:02:36.455
|
| 157 |
+
siguiente. Podemos ver que en la primera posición
|
| 158 |
+
|
| 159 |
+
00:02:36.455 --> 00:02:38.935
|
| 160 |
+
de memoria, en este caso, supongamos que comenzamos
|
| 161 |
+
|
| 162 |
+
00:02:38.935 --> 00:02:41.895
|
| 163 |
+
en la dirección cero, estaría la h, en
|
| 164 |
+
|
| 165 |
+
00:02:41.895 --> 00:02:44.700
|
| 166 |
+
la uno estaría la o, y así sucesivamente
|
| 167 |
+
|
| 168 |
+
00:02:44.700 --> 00:02:46.780
|
| 169 |
+
hasta llegar a la última letra que es
|
| 170 |
+
|
| 171 |
+
00:02:46.780 --> 00:02:50.140
|
| 172 |
+
estaría en la dirección tres. Otra cosa, pues,
|
| 173 |
+
|
| 174 |
+
00:02:50.140 --> 00:02:52.299
|
| 175 |
+
a forma de curiosidad sobre C más más
|
| 176 |
+
|
| 177 |
+
00:02:52.299 --> 00:02:54.939
|
| 178 |
+
es que utiliza un carácter de espacio vacío
|
| 179 |
+
|
| 180 |
+
00:02:54.939 --> 00:02:57.200
|
| 181 |
+
en la tabla ASCII, que es el diagonal
|
| 182 |
+
|
| 183 |
+
00:02:57.260 --> 00:03:01.385
|
| 184 |
+
invertida cero, para saber dónde termina de escribirse,
|
| 185 |
+
|
| 186 |
+
00:03:01.385 --> 00:03:04.425
|
| 187 |
+
pues, una lista de caracteres. De esta manera,
|
| 188 |
+
|
| 189 |
+
00:03:04.425 --> 00:03:06.425
|
| 190 |
+
cuando llega a la dirección de memoria cero
|
| 191 |
+
|
| 192 |
+
00:03:06.425 --> 00:03:09.225
|
| 193 |
+
cero cuatro, termina de ejecutar lo que esté
|
| 194 |
+
|
| 195 |
+
00:03:09.225 --> 00:03:12.025
|
| 196 |
+
haciendo con esta cadena de caracteres y da
|
| 197 |
+
|
| 198 |
+
00:03:12.025 --> 00:03:17.630
|
| 199 |
+
por concluido ese proceso. Pero no siempre vamos
|
| 200 |
+
|
| 201 |
+
00:03:17.630 --> 00:03:19.970
|
| 202 |
+
a utilizar cadenas de caracteres, a veces necesitamos
|
| 203 |
+
|
| 204 |
+
00:03:20.430 --> 00:03:23.570
|
| 205 |
+
realizar estructuras más complejas. Por ejemplo, si queremos
|
| 206 |
+
|
| 207 |
+
00:03:23.870 --> 00:03:26.430
|
| 208 |
+
pensar en una entidad como una persona, podemos
|
| 209 |
+
|
| 210 |
+
00:03:26.430 --> 00:03:29.465
|
| 211 |
+
pensar en sus diferentes propiedades o características dentro
|
| 212 |
+
|
| 213 |
+
00:03:29.465 --> 00:03:31.465
|
| 214 |
+
de nuestro programa, por ejemplo, el nombre y
|
| 215 |
+
|
| 216 |
+
00:03:31.465 --> 00:03:34.105
|
| 217 |
+
la edad. Son valores que nos pueden llegar
|
| 218 |
+
|
| 219 |
+
00:03:34.105 --> 00:03:36.105
|
| 220 |
+
a ser muy útiles si queremos hacer casi
|
| 221 |
+
|
| 222 |
+
00:03:36.105 --> 00:03:39.225
|
| 223 |
+
cualquier tipo de plataforma, ya que desde Facebook
|
| 224 |
+
|
| 225 |
+
00:03:39.225 --> 00:03:42.209
|
| 226 |
+
o cualquier red social hasta una pequeña aplicación
|
| 227 |
+
|
| 228 |
+
00:03:42.209 --> 00:03:45.010
|
| 229 |
+
móvil probablemente maneje este tipo de datos. Y
|
| 230 |
+
|
| 231 |
+
00:03:45.010 --> 00:03:46.290
|
| 232 |
+
la forma en la que se hacen es
|
| 233 |
+
|
| 234 |
+
00:03:46.290 --> 00:03:50.129
|
| 235 |
+
creando estructuras definidas con estos campos. Tenemos una
|
| 236 |
+
|
| 237 |
+
00:03:50.129 --> 00:03:53.810
|
| 238 |
+
estructura que se llama persona y contiene diferentes
|
| 239 |
+
|
| 240 |
+
00:03:53.810 --> 00:03:56.230
|
| 241 |
+
valores que son, pues el nombre, la edad
|
| 242 |
+
|
| 243 |
+
00:03:56.505 --> 00:03:59.245
|
| 244 |
+
dependiendo de tu aplicación, pueden ser otros valores.
|
| 245 |
+
|
| 246 |
+
00:04:00.345 --> 00:04:01.785
|
| 247 |
+
Pues, la forma en que se van a
|
| 248 |
+
|
| 249 |
+
00:04:01.785 --> 00:04:04.665
|
| 250 |
+
almacenar dentro de C más más es de
|
| 251 |
+
|
| 252 |
+
00:04:04.665 --> 00:04:07.545
|
| 253 |
+
esta manera. Si tú tienes una sección de
|
| 254 |
+
|
| 255 |
+
00:04:07.545 --> 00:04:10.380
|
| 256 |
+
memoria destinada para tu estructura tipo persona, va
|
| 257 |
+
|
| 258 |
+
00:04:10.380 --> 00:04:13.980
|
| 259 |
+
a tener dos dos segmentos de memoria, uno
|
| 260 |
+
|
| 261 |
+
00:04:13.980 --> 00:04:15.900
|
| 262 |
+
para la cadena de texto que representa el
|
| 263 |
+
|
| 264 |
+
00:04:15.900 --> 00:04:18.880
|
| 265 |
+
nombre y otro para el número que representa
|
| 266 |
+
|
| 267 |
+
00:04:19.019 --> 00:04:23.040
|
| 268 |
+
la edad. Y podrías agregarle la cantidad de
|
| 269 |
+
|
| 270 |
+
00:04:24.300 --> 00:04:27.074
|
| 271 |
+
elementos a la persona y que haría sería
|
| 272 |
+
|
| 273 |
+
00:04:27.074 --> 00:04:30.995
|
| 274 |
+
simplemente ocupar esos espacios de memoria en la
|
| 275 |
+
|
| 276 |
+
00:04:30.995 --> 00:04:34.035
|
| 277 |
+
RAM. Si te das cuenta, la palabra Diana
|
| 278 |
+
|
| 279 |
+
00:04:34.035 --> 00:04:36.755
|
| 280 |
+
está almacenada con cara a carácter en un
|
| 281 |
+
|
| 282 |
+
00:04:36.755 --> 00:04:39.950
|
| 283 |
+
espacio de memoria distinto, y el número veintiséis
|
| 284 |
+
|
| 285 |
+
00:04:40.170 --> 00:04:42.490
|
| 286 |
+
correspondiente a la edad está almacenado también en
|
| 287 |
+
|
| 288 |
+
00:04:42.490 --> 00:04:45.530
|
| 289 |
+
su propia dirección de memoria. Algo curioso para
|
| 290 |
+
|
| 291 |
+
00:04:45.530 --> 00:04:48.250
|
| 292 |
+
notar es que la si tuviéramos que obtener
|
| 293 |
+
|
| 294 |
+
00:04:48.250 --> 00:04:50.570
|
| 295 |
+
cuál es la dirección de memoria de la
|
| 296 |
+
|
| 297 |
+
00:04:50.570 --> 00:04:53.854
|
| 298 |
+
persona en general, coincidiría con la dirección de
|
| 299 |
+
|
| 300 |
+
00:04:53.854 --> 00:04:56.574
|
| 301 |
+
memoria inicial de el nombre. De manera que,
|
| 302 |
+
|
| 303 |
+
00:04:56.574 --> 00:04:59.854
|
| 304 |
+
para C más más es una forma de
|
| 305 |
+
|
| 306 |
+
00:04:59.854 --> 00:05:02.574
|
| 307 |
+
un poco ambigua de almacenar los datos, pero,
|
| 308 |
+
|
| 309 |
+
00:05:02.574 --> 00:05:05.099
|
| 310 |
+
sin embargo, resuelve la forma de hacerlo y
|
| 311 |
+
|
| 312 |
+
00:05:05.099 --> 00:05:07.819
|
| 313 |
+
aunque solo almacene los datos en sí, sí
|
| 314 |
+
|
| 315 |
+
00:05:07.819 --> 00:05:12.379
|
| 316 |
+
tiene una forma de reconocer cómo estos diferentes
|
| 317 |
+
|
| 318 |
+
00:05:12.379 --> 00:05:15.986
|
| 319 |
+
valores pertenecen a la persona, y todo ello
|
| 320 |
+
|
| 321 |
+
00:05:15.986 --> 00:05:17.986
|
| 322 |
+
nos lo permite gracias a el acceso con
|
| 323 |
+
|
| 324 |
+
00:05:17.986 --> 00:05:20.406
|
| 325 |
+
punteros. Vamos a ver en la próxima clase
|
| 326 |
+
|
| 327 |
+
00:05:20.626 --> 00:05:23.426
|
| 328 |
+
un ejemplo de código de cómo realizaríamos nuestras
|
| 329 |
+
|
| 330 |
+
00:05:23.426 --> 00:05:25.141
|
| 331 |
+
propias estructuras en C más más.
|
subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/01-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programación Orientada a Objetos con C/02-Estructuras de datos/02-Creación y uso de estructuras y punteros en C.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e5d685422b0dac43744ac36ccecd386b60ca5e4891f703e56114f41932131531
|
| 3 |
+
size 75762248
|