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

JavaScriptJavaScriptBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/ToolsandEnvironmentGroup(["Tools and Environment"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/AdvancedConceptsGroup -.-> javascript/async_prog("Asynchronous Programming") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") javascript/ToolsandEnvironmentGroup -.-> javascript/debugging("Debugging") subgraph Lab Skills javascript/variables -.-> lab-28559{{"Асинхронные функции в промисы"}} javascript/data_types -.-> lab-28559{{"Асинхронные функции в промисы"}} javascript/arith_ops -.-> lab-28559{{"Асинхронные функции в промисы"}} javascript/comp_ops -.-> lab-28559{{"Асинхронные функции в промисы"}} javascript/async_prog -.-> lab-28559{{"Асинхронные функции в промисы"}} javascript/spread_rest -.-> lab-28559{{"Асинхронные функции в промисы"}} javascript/debugging -.-> lab-28559{{"Асинхронные функции в промисы"}} end

Функция 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, чтобы улучшить свои навыки.