SlideShare una empresa de Scribd logo
1 de 26
By: Martin Suarez (suarezcm)
Arturo Guillen (guillenba)
Agenda
• Sincrono
• Asincrono
• Promesas
• Async – await
• Async / await vs Promesas
• React setState()
• Ejemplos del setState
• Consultas, comentarios o sugerencias
Sincrono (Sync)
En un proceso SINCRONO podríamos imaginar tener un proceso "A" y
un proceso "B" estos no se ejecutan al mismo tiempo en paralelo, es
decir si por ejemplo envió ambos a ejecutarse A dura 5 segundos y B 10
segundos, B tendría que esperar que A termine de ejecutarse para el
poder entonces ejecutarse en total estas operaciones consumirían 15
segundos.
Asincrono (Async)
En un proceso ASINCRONO podríamos imagine tener un proceso "A" y
un proceso "B" estos se ejecutan al mismo tiempo en paralelo, es decir
si por ejemplo envió ambos a ejecutarse A dura 5 segundos y B 10
segundos, en total estas operaciones consumirían 10 segundos.
Promesas (Promises)
Una promesa representa un valor que puede estar disponible ahora, en el futuro, o
nunca.
Promesas (Promises) 1
Una Promesa es un proxy para un valor no necesariamente conocido
en el momento que es creada la promesa. Permite asociar
manejadores que actuarán asincrónicamente sobre un eventual valor
en caso de éxito, o la razón de falla en caso de una falla.
async / await
Las funciones Async/await, nos ayudan a escribir código completamente
síncrono mientras realizamos tareas asíncronas en segundo plano.
async / await
Una nueva forma de escribir código asíncrono es Async/Await está
basado en promises, así que no está bloqueando el flujo.
La gran diferencia es que el código asíncrono se parece y se
comporta un poco más al código síncrono. Aquí es donde reside todo
su poder.
Las opciones anteriores para el código asíncrono eran callbacks
(llamadas de retorno) y promises.
Async / await
vs Promesas
Async / await vs
Promesas (Scope)
Async / await vs
Promesas (Logic)
Async / await vs
Promesas (Error)
Problemas con el setState
¿Qué hace setState?
setState() programa una
actualización al objeto estado de un
componente. Cuando el estado cambia,
el componente responde volviendo a
renderizar.
¿Por qué setState me está dando el valor incorrecto?
En React,
tanto this.props como this.state representan los
valores renderizados, es decir, lo que hay
actualmente en la pantalla.
Las llamadas a setState son asíncronas; no
te fíes de que this.state refleje el nuevo
valor inmediatamente después de llamar
a setState
incrementCount() {
// Nota: esto *no* funcionará como se espera.
this.setState({count: this.state.count + 1});
}
handleSomething() {
// Digamos que `this.state.count` se inicia en 0.
this.incrementCount();
this.incrementCount();
this.incrementCount();
// Cuando React rerenderiza el componente, `this.state.count` será 1, pero tu esperabas 3.
// Esto es porque la función anterior `incrementCount()` lee de `this.state.count`,
// pero React no actualiza `this.state.count` hasta que el componente se vuelve a renderizar.
// Entonces `incrementCount()` termina leyendo `this.state.count` como 0 cada vez, y lo establece
a 1.
}
Ejemplo de código que no se comportará como se espera
¿Cómo actualizo el estado con valores que
dependen del estado actual?
Pasa una función en lugar de un objeto a setState para asegurarte de
que la llamada siempre use la versión más actualizada del estado
incrementCount() {
this.setState((state) => {
// Importante: lee `state` en vez de `this.state` al actualizar.
return {count: state.count + 1}
});
}
handleSomething() {
// Digamos que `this.state.count` inicia en 0.
this.incrementCount();
this.incrementCount();
this.incrementCount();
// Si lees `this.state.count` ahora, aún sería 0.
// Pero cuando React vuelva a renderizar el componente, será 3.
}
Ejemplo de un comportamiento esperado, utilizando una función
¿Cuándo setState es asíncrono?
Esto se traduce en mejoras
significativas de rendimiento.
DIV Padre
DIV hijo
Evento onClick actualiza
propiedad A del estado
Evento onClick actualiza
propiedad B del estado
React intencionalmente
esperara todas las
actualizaciones para
realizar un solo render.
setState es asíncrono dentro de
los controladores de eventos.
Esto garantiza, por
ejemplo, que si Parent y Child llaman a set
State durante un evento de click, Child no
se renderiza dos veces.
¿Se puede ejecutar una función cuando el setState
haya actualizado el estado correctamente ?
setNumeroElevado_EjemploBuenaPractica(estado,funcionExitosa){
this.setState({...estado}, funcionExitosa);
}
Ejemplos del setState
Bibliografía
• Kent, J (2019). Async/await Como Funcionan Realmente. Javascript, 1(1), 1. Recuperado de:
https://www.ma-no.org/es/programacion/javascript/async-await-como-funcionan-realmente-un-ejemplo
• Firefox, M (2020). Función async. Javascript, 1(1), 1. Recuperado de:
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/funcion_asincrona
• Firefox, M (2020). Promise. Javascript, 1(1), 1. Recuperado de:
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise
• React, R (2020). Estado del componente. Javascript, 1(1), 1. Recuperado de: https://es.reactjs.org/docs/faq-
state.html#:~:text=Actualmente%2C%20setState%20es%20as%C3%ADncrono%20dentro,final%20del%20eve
nto%20del%20navegador.
• Nolan, T (2020). Cómo escribir código asíncrono en Node.js. Javascript, 1(1), 1. Recuperado de:
https://www.digitalocean.com/community/tutorials/how-to-write-asynchronous-code-in-node-js-es
• Hoehne, K (2018). Async/Await vs Promises — A Guide and Cheat Sheet. Javascript, 1(1), 1. Recuperado de:
https://levelup.gitconnected.com/async-await-vs-promises-4fe98d11038f
• Mogollón, P (2018). Callbacks vs Promise vs Async/Await en JavaScript. Javascript, 1(1), 1. Recuperado de:
http://www.paulomogollon.com/promises-vs-async-await-vs-callbacks-en-javascript-espanol/

Más contenido relacionado

La actualidad más candente

Ley de dalton de presiones aditivas
Ley de dalton de presiones aditivasLey de dalton de presiones aditivas
Ley de dalton de presiones aditivasAlexis Alatorre
 
Problemas calortrabajoprimeraley
Problemas calortrabajoprimeraleyProblemas calortrabajoprimeraley
Problemas calortrabajoprimeraleyJose Miranda
 
fisicoquimica I 2020. 2do cohorte.ppt
fisicoquimica I 2020. 2do cohorte.pptfisicoquimica I 2020. 2do cohorte.ppt
fisicoquimica I 2020. 2do cohorte.pptJesusMiranda96
 
Coding Standards & Best Practices for iOS/C#
Coding Standards & Best Practices for iOS/C#Coding Standards & Best Practices for iOS/C#
Coding Standards & Best Practices for iOS/C#Asim Rais Siddiqui
 
Programa en java con el Metodo de la burbuja
Programa en java con el Metodo de la burbujaPrograma en java con el Metodo de la burbuja
Programa en java con el Metodo de la burbujaLupitaOMG Garmendia
 
Manejo de visual basic 2010
Manejo de visual basic 2010Manejo de visual basic 2010
Manejo de visual basic 2010Juan Ortega
 
Trabajo n° 1 termodinamica
Trabajo n° 1 termodinamicaTrabajo n° 1 termodinamica
Trabajo n° 1 termodinamicaPablo Ibañez
 
Definiciones generales termodinámica
Definiciones generales termodinámicaDefiniciones generales termodinámica
Definiciones generales termodinámicaeduardobarreto2015
 
Propiedades de entropia y 3° ley de la termodinamica
Propiedades de entropia y 3° ley de la termodinamicaPropiedades de entropia y 3° ley de la termodinamica
Propiedades de entropia y 3° ley de la termodinamicaIndira Godos
 

La actualidad más candente (17)

Ley de dalton de presiones aditivas
Ley de dalton de presiones aditivasLey de dalton de presiones aditivas
Ley de dalton de presiones aditivas
 
Problemas calortrabajoprimeraley
Problemas calortrabajoprimeraleyProblemas calortrabajoprimeraley
Problemas calortrabajoprimeraley
 
Alice 8
Alice 8Alice 8
Alice 8
 
fisicoquimica I 2020. 2do cohorte.ppt
fisicoquimica I 2020. 2do cohorte.pptfisicoquimica I 2020. 2do cohorte.ppt
fisicoquimica I 2020. 2do cohorte.ppt
 
Ley de Enfriamiento de Newton
Ley de Enfriamiento de NewtonLey de Enfriamiento de Newton
Ley de Enfriamiento de Newton
 
Intercambiadores
IntercambiadoresIntercambiadores
Intercambiadores
 
Coding Standards & Best Practices for iOS/C#
Coding Standards & Best Practices for iOS/C#Coding Standards & Best Practices for iOS/C#
Coding Standards & Best Practices for iOS/C#
 
Gases reales
Gases realesGases reales
Gases reales
 
Programa en java con el Metodo de la burbuja
Programa en java con el Metodo de la burbujaPrograma en java con el Metodo de la burbuja
Programa en java con el Metodo de la burbuja
 
Capacidad calorífica
Capacidad caloríficaCapacidad calorífica
Capacidad calorífica
 
Manejo de visual basic 2010
Manejo de visual basic 2010Manejo de visual basic 2010
Manejo de visual basic 2010
 
Trabajo, energía y potencia
Trabajo, energía y potenciaTrabajo, energía y potencia
Trabajo, energía y potencia
 
Trabajo n° 1 termodinamica
Trabajo n° 1 termodinamicaTrabajo n° 1 termodinamica
Trabajo n° 1 termodinamica
 
Definiciones generales termodinámica
Definiciones generales termodinámicaDefiniciones generales termodinámica
Definiciones generales termodinámica
 
Formulario
FormularioFormulario
Formulario
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Propiedades de entropia y 3° ley de la termodinamica
Propiedades de entropia y 3° ley de la termodinamicaPropiedades de entropia y 3° ley de la termodinamica
Propiedades de entropia y 3° ley de la termodinamica
 

Similar a Sync - Async.pptx

Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto whileLenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto whileCarlos
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Ignacio Martín
 
Estructuras repetitivas (bloques de instrucciones)
Estructuras repetitivas (bloques de instrucciones)Estructuras repetitivas (bloques de instrucciones)
Estructuras repetitivas (bloques de instrucciones)Royer Lopez Nuñez
 
SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignacionesflekoso
 
1.1 palabras reservadas para hacer un pseudocódigo
1.1 palabras reservadas para hacer un pseudocódigo1.1 palabras reservadas para hacer un pseudocódigo
1.1 palabras reservadas para hacer un pseudocódigoGioo
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++LenHugo
 
Lenguaje de programacion C++ 4
Lenguaje de programacion C++ 4Lenguaje de programacion C++ 4
Lenguaje de programacion C++ 4David
 
Repeticiones
RepeticionesRepeticiones
Repeticioneschembe
 
Unidad4
Unidad4Unidad4
Unidad4JHONNY
 
Lenguajesdeprogramacion c nivel1-unidad4
Lenguajesdeprogramacion c nivel1-unidad4Lenguajesdeprogramacion c nivel1-unidad4
Lenguajesdeprogramacion c nivel1-unidad4camnav
 
Repeticiones
RepeticionesRepeticiones
Repeticionesyesid19
 
Repeticiones
RepeticionesRepeticiones
Repeticioneschembe
 
ESTATUTO WHILE
ESTATUTO WHILEESTATUTO WHILE
ESTATUTO WHILEcharnisch
 
Lenguajesdeprogramacion c nivel1-unidad4
Lenguajesdeprogramacion c nivel1-unidad4Lenguajesdeprogramacion c nivel1-unidad4
Lenguajesdeprogramacion c nivel1-unidad4charnisch
 
Repeticiones
RepeticionesRepeticiones
Repeticioneschembe
 
Unidad4
Unidad4Unidad4
Unidad4JHONNY
 

Similar a Sync - Async.pptx (20)

Sync - Async.pdf
Sync - Async.pdfSync - Async.pdf
Sync - Async.pdf
 
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto whileLenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
 
Estructuras repetitivas (bloques de instrucciones)
Estructuras repetitivas (bloques de instrucciones)Estructuras repetitivas (bloques de instrucciones)
Estructuras repetitivas (bloques de instrucciones)
 
Java básico
Java  básicoJava  básico
Java básico
 
SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignaciones
 
1.1 palabras reservadas para hacer un pseudocódigo
1.1 palabras reservadas para hacer un pseudocódigo1.1 palabras reservadas para hacer un pseudocódigo
1.1 palabras reservadas para hacer un pseudocódigo
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
Hi Fiber!
Hi Fiber!Hi Fiber!
Hi Fiber!
 
Fundamentos
Fundamentos Fundamentos
Fundamentos
 
Lenguaje de programacion C++ 4
Lenguaje de programacion C++ 4Lenguaje de programacion C++ 4
Lenguaje de programacion C++ 4
 
Repeticiones
RepeticionesRepeticiones
Repeticiones
 
Unidad4
Unidad4Unidad4
Unidad4
 
Lenguajesdeprogramacion c nivel1-unidad4
Lenguajesdeprogramacion c nivel1-unidad4Lenguajesdeprogramacion c nivel1-unidad4
Lenguajesdeprogramacion c nivel1-unidad4
 
Repeticiones
RepeticionesRepeticiones
Repeticiones
 
Repeticiones
RepeticionesRepeticiones
Repeticiones
 
ESTATUTO WHILE
ESTATUTO WHILEESTATUTO WHILE
ESTATUTO WHILE
 
Lenguajesdeprogramacion c nivel1-unidad4
Lenguajesdeprogramacion c nivel1-unidad4Lenguajesdeprogramacion c nivel1-unidad4
Lenguajesdeprogramacion c nivel1-unidad4
 
Repeticiones
RepeticionesRepeticiones
Repeticiones
 
Unidad4
Unidad4Unidad4
Unidad4
 

Sync - Async.pptx

  • 1. By: Martin Suarez (suarezcm) Arturo Guillen (guillenba)
  • 2. Agenda • Sincrono • Asincrono • Promesas • Async – await • Async / await vs Promesas • React setState() • Ejemplos del setState • Consultas, comentarios o sugerencias
  • 3. Sincrono (Sync) En un proceso SINCRONO podríamos imaginar tener un proceso "A" y un proceso "B" estos no se ejecutan al mismo tiempo en paralelo, es decir si por ejemplo envió ambos a ejecutarse A dura 5 segundos y B 10 segundos, B tendría que esperar que A termine de ejecutarse para el poder entonces ejecutarse en total estas operaciones consumirían 15 segundos.
  • 4. Asincrono (Async) En un proceso ASINCRONO podríamos imagine tener un proceso "A" y un proceso "B" estos se ejecutan al mismo tiempo en paralelo, es decir si por ejemplo envió ambos a ejecutarse A dura 5 segundos y B 10 segundos, en total estas operaciones consumirían 10 segundos.
  • 5. Promesas (Promises) Una promesa representa un valor que puede estar disponible ahora, en el futuro, o nunca.
  • 6. Promesas (Promises) 1 Una Promesa es un proxy para un valor no necesariamente conocido en el momento que es creada la promesa. Permite asociar manejadores que actuarán asincrónicamente sobre un eventual valor en caso de éxito, o la razón de falla en caso de una falla.
  • 7.
  • 8. async / await Las funciones Async/await, nos ayudan a escribir código completamente síncrono mientras realizamos tareas asíncronas en segundo plano.
  • 9. async / await Una nueva forma de escribir código asíncrono es Async/Await está basado en promises, así que no está bloqueando el flujo. La gran diferencia es que el código asíncrono se parece y se comporta un poco más al código síncrono. Aquí es donde reside todo su poder. Las opciones anteriores para el código asíncrono eran callbacks (llamadas de retorno) y promises.
  • 10.
  • 11.
  • 12. Async / await vs Promesas
  • 13. Async / await vs Promesas (Scope)
  • 14. Async / await vs Promesas (Logic)
  • 15. Async / await vs Promesas (Error)
  • 16. Problemas con el setState
  • 17. ¿Qué hace setState? setState() programa una actualización al objeto estado de un componente. Cuando el estado cambia, el componente responde volviendo a renderizar.
  • 18. ¿Por qué setState me está dando el valor incorrecto? En React, tanto this.props como this.state representan los valores renderizados, es decir, lo que hay actualmente en la pantalla. Las llamadas a setState son asíncronas; no te fíes de que this.state refleje el nuevo valor inmediatamente después de llamar a setState
  • 19. incrementCount() { // Nota: esto *no* funcionará como se espera. this.setState({count: this.state.count + 1}); } handleSomething() { // Digamos que `this.state.count` se inicia en 0. this.incrementCount(); this.incrementCount(); this.incrementCount(); // Cuando React rerenderiza el componente, `this.state.count` será 1, pero tu esperabas 3. // Esto es porque la función anterior `incrementCount()` lee de `this.state.count`, // pero React no actualiza `this.state.count` hasta que el componente se vuelve a renderizar. // Entonces `incrementCount()` termina leyendo `this.state.count` como 0 cada vez, y lo establece a 1. } Ejemplo de código que no se comportará como se espera
  • 20. ¿Cómo actualizo el estado con valores que dependen del estado actual? Pasa una función en lugar de un objeto a setState para asegurarte de que la llamada siempre use la versión más actualizada del estado
  • 21. incrementCount() { this.setState((state) => { // Importante: lee `state` en vez de `this.state` al actualizar. return {count: state.count + 1} }); } handleSomething() { // Digamos que `this.state.count` inicia en 0. this.incrementCount(); this.incrementCount(); this.incrementCount(); // Si lees `this.state.count` ahora, aún sería 0. // Pero cuando React vuelva a renderizar el componente, será 3. } Ejemplo de un comportamiento esperado, utilizando una función
  • 22. ¿Cuándo setState es asíncrono? Esto se traduce en mejoras significativas de rendimiento. DIV Padre DIV hijo Evento onClick actualiza propiedad A del estado Evento onClick actualiza propiedad B del estado React intencionalmente esperara todas las actualizaciones para realizar un solo render. setState es asíncrono dentro de los controladores de eventos. Esto garantiza, por ejemplo, que si Parent y Child llaman a set State durante un evento de click, Child no se renderiza dos veces.
  • 23. ¿Se puede ejecutar una función cuando el setState haya actualizado el estado correctamente ? setNumeroElevado_EjemploBuenaPractica(estado,funcionExitosa){ this.setState({...estado}, funcionExitosa); }
  • 25.
  • 26. Bibliografía • Kent, J (2019). Async/await Como Funcionan Realmente. Javascript, 1(1), 1. Recuperado de: https://www.ma-no.org/es/programacion/javascript/async-await-como-funcionan-realmente-un-ejemplo • Firefox, M (2020). Función async. Javascript, 1(1), 1. Recuperado de: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/funcion_asincrona • Firefox, M (2020). Promise. Javascript, 1(1), 1. Recuperado de: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise • React, R (2020). Estado del componente. Javascript, 1(1), 1. Recuperado de: https://es.reactjs.org/docs/faq- state.html#:~:text=Actualmente%2C%20setState%20es%20as%C3%ADncrono%20dentro,final%20del%20eve nto%20del%20navegador. • Nolan, T (2020). Cómo escribir código asíncrono en Node.js. Javascript, 1(1), 1. Recuperado de: https://www.digitalocean.com/community/tutorials/how-to-write-asynchronous-code-in-node-js-es • Hoehne, K (2018). Async/Await vs Promises — A Guide and Cheat Sheet. Javascript, 1(1), 1. Recuperado de: https://levelup.gitconnected.com/async-await-vs-promises-4fe98d11038f • Mogollón, P (2018). Callbacks vs Promise vs Async/Await en JavaScript. Javascript, 1(1), 1. Recuperado de: http://www.paulomogollon.com/promises-vs-async-await-vs-callbacks-en-javascript-espanol/