Antes de que se introdujera la clase Promise, solo había una forma de manejar el código asíncrono: el patrón de callback.
Un callback es una función que se pasa como argumento a otra función y que se llamará una vez que haya terminado alguna acción en esa otra función. Un patrón común para esas funciones de callback es que aceptan un «error» como primer parámetro (ver el ejemplo a continuación).
function callback(error, arg2, arg3) {}
¿Cómo se relaciona esto con el código asíncrono?
Históricamente, los callbacks se han usado para poder hacer algo de trabajo después de que se completara una tarea asíncrona y sin bloquear todo el programa.
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
En el ejemplo anterior, la función fetchProduct (que es asíncrona) recibe un callback como segundo argumento que decide qué hacer cuando se han obtenido los datos del producto.
Los dos objetivos de este ejercicio son:
promisify que convierta una función que usa el «patrón de callback» en una función que devuelve una Promise. Mira el ejemplo a continuación.function fetchProduct(productId, function(error, data) {
if (error) {
// Handle the error
} else {
// Make something with your data
}
})
const fetchProductAsPromise = promisify(fetchProduct);
// Now you got a function `fetchProductAsPromise`
// that returns a promise
fetchProductAsPromise(productId)
.then((data) => {})
.catch((error) => {});
Promise (sin usarlos)all: recibe un array de promesas y se resuelve cuando todas ellas se resuelven, o se rechaza cuando una de ellas se rechaza.allSettled: recibe un array de promesas y se resuelve cuando todas ellas se resuelven o se rechazan.race: recibe un array de promesas y se resuelve o se rechaza con el valor de la primera promesa que se resuelva o se rechace.any: recibe un array de promesas y se resuelve cuando una de ellas se resuelve, o se rechaza cuando todas ellas se rechazan.Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.