Асинхронные функции в промисы

Beginner

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

Введение

В этом практическом занятии мы узнаем, как превратить асинхронную функцию в функцию, возвращающую промис, с использованием функции promisify. Это позволит нам писать более чистый и читаемый код, избежав коллбэк-функций. Мы также изучим применение каррирования и оператора "остаток" в JavaScript.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 82%. Он получил 100% положительных отзывов от учащихся.

Функция promisify

Для преобразования асинхронной функции в функцию, возвращающую промис, следуйте шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Используйте каррирование, чтобы вернуть функцию, которая возвращает Promise, вызывающий исходную функцию.
  3. Используйте оператор "остаток" (...), чтобы передать все параметры.
  4. Если вы используете Node 8+ вы можете использовать util.promisify.
  5. Вот пример кода:
const promisify =
  (func) =>
  (...args) =>
    new Promise((resolve, reject) =>
      func(...args, (err, result) => (err ? reject(err) : resolve(result)))
    );
  1. Чтобы использовать эту функцию, определите асинхронную функцию и передайте ее в качестве параметра в функцию promisify. Возвращенная функция теперь будет возвращать промис.
const delay = promisify((d, cb) => setTimeout(cb, d));
delay(2000).then(() => console.log("Hi!")); // Promise разрешается спустя 2с

Функция delay - это пример асинхронной функции, которая теперь возвращает промис с использованием функции promisify.

Резюме

Поздравляем! Вы завершили практическое занятие по функции promisify. Вы можете выполнить больше практических заданий в LabEx, чтобы улучшить свои навыки.