Funciones asincrónicas a Promesas

Beginner

This tutorial is from open-source community. Access the source code

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.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 82%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Función promisify

Para convertir una función asincrónica para que devuelva una promesa, siga estos pasos:

  1. Abra la Terminal/SSH y escriba node para comenzar a practicar la codificación.
  2. Utilice la currying para devolver una función que devuelva una Promise que llama a la función original.
  3. Utilice el operador rest (...) para pasar todos los parámetros.
  4. Si está utilizando Node 8+ puede utilizar util.promisify.
  5. 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)))
    );
  1. 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.