Función promisify
Para convertir una función asincrónica para que devuelva una promesa, siga estos pasos:
- Abra la Terminal/SSH y escriba
node para comenzar a practicar la codificación.
- Utilice la currying para devolver una función que devuelva una
Promise que 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.