Introducción
En este laboratorio, aprenderemos cómo convertir una función asincrónica para que devuelva una promesa utilizando la función promisify. Esto nos permitirá escribir código más limpio y legible evitando las funciones de devolución de llamada. También exploraremos el uso de la currying y el operador rest en JavaScript.
Función promisify
Para convertir una función asincrónica para que devuelva una promesa, siga estos pasos:
- Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación. - Utilice la currying para devolver una función que devuelva una
Promiseque llama a la función original. - Utilice el operador rest (
...) para pasar todos los parámetros. - Si está utilizando Node 8+ puede utilizar
util.promisify. - Aquí hay un fragmento de código de ejemplo:
const promisify =
(func) =>
(...args) =>
new Promise((resolve, reject) =>
func(...args, (err, result) => (err ? reject(err) : resolve(result)))
);
- Para utilizar esta función, defina la función asincrónica y pásela como parámetro a la función
promisify. La función devuelta ahora devolverá una promesa.
const delay = promisify((d, cb) => setTimeout(cb, d));
delay(2000).then(() => console.log("Hi!")); // La promesa se resuelve después de 2s
La función delay es un ejemplo de una función asincrónica que ahora devuelve una promesa utilizando la función promisify.
Resumen
¡Felicitaciones! Has completado el laboratorio de la Función promisify. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.