This graph shows how many times the word ______ has been mentioned throughout the history of the program.
¡Midu! Necesito un consejo. Trato de concentrarme programando, pero me distraigo viendo tus ojazos, guapo.
¿Te gustan mis ojos? Pues tendrías que ver mi ojete. Eso sí que te iba a volver loco.
Eso sí que te va a volver loco. ¡Continuamos, amigos! Vamos con lo siguiente.
Esa no la esperabais, ¿eh? Os he pillado ahí, os he pillado con la guardia baja, ¿eh?
Va a llegar una novedad a las promesas de JavaScript que os va a volar la cabeza.
De verdad, ojo, porque tenemos una novedad que va a llegar a las promesas de JavaScript, que está muy chulo.
Escupí el agua que tomaba en mi computador. Bueno, era la idea, era la idea, hombre.
Que así, que de repente, que no lo esperaseis. El ojete es mejor, yo lo confirmo.
De la cruz, no solo lo ha visto, sino que lo ha probado, o sea que... Bueno, vamos.
Promesas con resolvers. ¿Qué es esto? Promesas con resolvers es una cosa nueva que va a llegar a JavaScript, ¿vale?
Que necesitábamos desde hace mucho tiempo. ¿Qué es esto? ¿Para qué funciona? ¿Y de qué va?
Mirad, ya está en la fase 3. ¿Qué quiere decir? Pues que, amigos, las promesas con resolvers va a llegar en 2024.
La próxima versión de JavaScript, esto va a llegar. Y vas a ver que es interesante por diferentes motivos.
Hasta ahora, por ejemplo, si tenías que hacer este código... Bueno, este código es un poco de aquella forma, pero...
¿Podríamos hacer este código? Vale. Mira, podrías hacer este código.
Podrías hacer este código. ¿Y este código para qué servía?
Este código, básicamente, lo que hacía es que tú creabas aquí una promesa y envolvías otro método.
Aquí estabas envolviendo otro método que lo que hacías era, pues, cuando terminaba la data, entonces lo resolvías.
¿Ves? Lo teníamos aquí. Esto es como lo harías a día de hoy.
Se haría así. Tendrías que envolver con una promesa algo que hasta ahora fuese síncrono.
De hecho, si queréis, os voy a intentar hacer un ejemplo. Voy a intentar hacer un ejemplo más real.
Use fs with callbacks to read a file.
Obviamente esto no tiene sentido, pero es solo para que nos hagamos un poco la idea.
Esto lo vamos a poner así. Esto para que me escriba GithackoPilot.
Vale, a día de hoy, no sé qué mierda está haciendo esto, pero me parece bien.
RetourConsole, no sé qué. Replace.
Entonces, ¿qué pasa? Que tú cuando querías pasar esto a una promesa, tendrías que hacer return, new promise.
Obviamente, perdón, para que luego la gente...
Obviamente de esto hay una forma de utilizar las promesas directamente.
Si tú haces aquí el import del fs from fs barra promises, ya te devuelve las promesas.
Pero imagínate que solo existen los callbacks, ¿vale?
Entonces, vale, tenemos esto. Perfecto.
Tendríamos esto. Esto habría que cerrarlo aquí.
Esto por acá. Esto por aquí.
Vale. Entonces, esto...
Esto...
Spacer require...
Vale. Solo para que no me se hagan errores.
Nunca está...
Para que no se hagan nada en rojo.
Console.log.resort.
¿Vale?
Si tú quisieras...
Si tú quisieras esto, pasarlo a una promesa, ¿qué tienes que hacer?
Pues tendrías que new promise.
Lo tienes que envolver en una promesa.
Esto es súper típico y es algo que tienes que hacer en tu día a día casi constantemente.
Entonces, tú haces esto.
Vale. Perfecto.
Mira, voy a guardar este archivo para que lo pueda...
Promises.js.
¿Vale?
Vale.
Y...
Cons promise.
Muy bien.
Entonces, pues ya lo hemos envuelto.
Esto es un poco rollo.
Es un poco rollo porque al final lo que estás haciendo es que te está...
Te está dando como más anidación.
Pues con los resolvers, ¿qué es esto de los resolvers?
Los resolvers lo que te va a permitir es que vas a poder hacer esto de otra forma.
Vas a poder llamar a promise with resolvers y esto te devuelve el resolve, el reject y el promise.
¿Vale?
Y entonces tú ya vas a tener aquí una función, por ejemplo, read file.
¿Vale?
Que aquí vamos a pasar todo esto que teníamos aquí, el read file, no sé qué, no sé cuánto.
Todo lo que habíamos hecho aquí, ¿vale?
Lo vamos a pasar aquí.
Pero ahora ya no necesitamos envolverlo en una promesa, sino que utilizando los resolvers,
tú lo que puedes hacer aquí es devolver la promesa, ¿vale?
Return promise.
Y aquí dentro decirle cuándo tiene que hacer el resolve, que sería aquí.
Aquí el resolve, reject.
Ahí el resolve, resolve, perdón.
Y si hay un error, pues aquí, por ejemplo, podrías hacer el reject del error y tal.
Entonces, fíjate lo que estás haciendo.
Lo que estamos haciendo es, oye, voy a crear una promesa y me das el resolve, el reject y la promesa.
Y aquí dentro, donde yo quiera, llamo al resolve o al reject y lo que hago es devolver la promesa.
Y esto te está simplificando el código una verdadera salvajada.
Nosotros a lo mejor en nuestro día a día no lo utilizamos, aunque seguro que alguna vez habéis utilizado el return promise, ¿no?
O sea, habéis utilizado return promise punto resolve, ¿no?
Que eso a veces, pues puede tener sentido cuando puedes directamente devolver la promesa.
Pero ¿qué pasa?
Que aquí, en este caso, tú no puedes hacer aquí un return promise resolve.
Porque este return está dentro de este callback y, por lo tanto, no funcionaría.
Por eso, tienes que hacer esto.
Tendrías que hacer esto.
Tendrías que devolver la promesa y desde dentro resolverlo, ¿no?
Entonces, la idea es que evitar la anidación, evitar los hacks que a día de hoy se hacen.
De hecho, hay un montón de código hacky.
Mira, me gusta mucho aquí porque aquí podéis ver, por ejemplo, implementaciones que están haciendo esto, ¿no?
Por ejemplo, React. Aquí tienes un ejemplo inline donde hace un hack para no tener problemas con esto que estamos viendo.
¿Ves? Hace aquí, aquí, ¿ves?
Cons promise, hace new promise y fíjate la guarrada que hace para poder tener el objeto de la promesa aquí.
Y fíjate que hace este lead resolve, este resolve, que es lo que está hackeando aquí.
Esto es muy guarro, no hagáis esto, ¿vale?
No hagáis esto.
Esto es muy guarro, pero justamente lo hacen para no tener que envolver todo este código.
Para no tener que envolver todo este código con un new promise,
hacen esta guarrada.
Dicen, oye, voy a añadir este resolve, creo la promesa y dentro del new promise,
entonces, cambio mutuo el valor del resolve y así no tengo que añadirlo con esto.
Y, bueno, que no es React, que también lo hace Vue, lo hace TypeScript, lo hace Vite, lo hacen un montón, ¿eh?
Mira, aquí lo tenemos, por ejemplo, en Vue.
Aquí en TypeScript, aquí tiene uno propio.
¿Ves? Que es justamente lo que van a añadir.
Aquí en Vite, exactamente lo mismo.
Esto es para evitar que todo ese código lo tengan que envolver.
Bueno, bastante interesante y que por suerte lo van a añadir.
Pero solo que sepáis que existe porque yo creo que muchas veces puede tener bastante sentido, ¿vale?
Buen stream, gracias, hombre.
Angular no lo hace.
Es que Angular no hace nada, os narrator.
Entonces, claro, ¿qué va a hacer?
¿Qué va a hacer, amigos?
Es broma, ¿eh?
Lo de Angular, que el otro día estuve aprendiendo Angular aquí.
¡Muha!
Lo de всегда es trabajar!
¡No!