Введение

Асинхронные операции являются ключевым аспектом Node.js, и хотя обратные вызовы традиционно использовались для обработки асинхронных задач, промисы и асинхронность/ожидание стали предпочтительным подходом для многих разработчиков из-за их удобочитаемости и простоты использования. В этой статье мы обсудим, как преобразовать функции на основе обратного вызова в функции на основе промисов, используя встроенный в Node.js метод util.promisify.

Зачем конвертировать в промисы?

  1. Улучшенная читабельность: обещания обеспечивают более чистый и читаемый способ обработки асинхронного кода, упрощая его понимание и поддержку.
  2. Улучшенная обработка ошибок: промисы упрощают последовательную обработку ошибок, используя блоки .catch() или try-catch с async/await.
  3. Цепные операции: обещания можно легко связать в цепочку, что позволяет использовать более сложные асинхронные рабочие процессы.

Использование util.promisify

Метод util.promisify, представленный в Node.js v8.0.0, позволяет легко преобразовывать функции на основе обратного вызова в функции на основе Promise. Вот пошаговое руководство по использованию util.promisify:

  1. Импортируйте модуль util:
const util = require(‘util’);

2. Создайте функцию обратного вызова. Например, простая функция, которая читает файл:

const fs = require('fs');

function readFileCallback(filePath, callback) {
  fs.readFile(filePath, 'utf8', callback);
}

3. Преобразуйте функцию на основе обратного вызова в функцию на основе промисов, используя util.promisify:

const readFilePromise = util.promisify(readFileCallback);

4. Используйте функцию Promise-based с .then() и .catch() или async/await:

// Using .then() and .catch()
readFilePromise('./example.txt')
  .then((data) => {
    console.log(data);
  })
  .catch((err) => {
    console.error(err);
  });

// Using async/await
(async () => {
  try {
    const data = await readFilePromise('./example.txt');
    console.log(data);
  } catch (err) {
    console.error(err);
  }
})();

Заключение

Метод util.promisify в Node.js предоставляет простой способ преобразования функций на основе обратного вызова в функции на основе промисов, позволяя вам использовать улучшенную читаемость, обработку ошибок и возможности связывания промисов. Преобразовав свои асинхронные операции в промисы, вы можете сделать свой код более удобным для сопровождения, более простым для понимания и лучше приспособленным для обработки сложных рабочих процессов.

Подписывайтесь на меня в Твиттере📱@thee_noble_dev

Подписывайтесь на меня в Tiktok📱@thee_noble_dev

Подпишитесь на меня в Instagram 📱 @thee_noble_dev

Подпишитесь на мой канал на YouTube, чтобы узнать больше📱 @thee_noble_dev