«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Асинхронные шаблоны в Node.js — Учебное пособие по Node.js — Часть 6

Асинхронные шаблоны в Node.js — Учебное пособие по Node.js — Часть 6

Опубликовано 2 ноября 2024 г.
Просматривать:164

Async Patterns in Node.js - Node.js Tutorial - Part 6

Асинхронные шаблоны в Node.js

Node.js работает на основе однопоточной, управляемой событиями архитектуры, что означает, что он может обрабатывать множество операций одновременно, не блокируя основной поток. Это крайне важно для создания масштабируемых приложений, в которых такие задачи, как операции ввода-вывода (чтение файлов, запросы к базам данных и т. д.), должны выполняться асинхронно, чтобы избежать блокировки выполнения другого кода.

Написание асинхронного и синхронизирующего кода

Синхронный код

Синхронный код выполняет один шаг за раз, то есть каждый шаг должен завершиться перед переходом к следующему. Это может заблокировать основной поток, если операции выполняются медленно (например, чтение большого файла или запрос к базе данных).

Пример (синхронный код):

const fs = require('fs');

const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
  • Проблема: Если readFileSync занимает много времени (например, файл большой), все приложение будет заблокировано на это время.

Асинхронный код

С другой стороны, асинхронный код не блокирует основной поток. Вместо ожидания завершения операции программа продолжает выполнение и обрабатывает результат асинхронной операции, когда она готова.

Пример (асинхронный код):

const fs = require('fs');
// Call Back
fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

console.log('This will log before the file content!');
  • В этом примере файл читается асинхронно, и программа не блокируется; строка console.log('Это будет записано до содержимого файла!') выполняется, пока файл все еще читается.

Когда использовать синхронный или асинхронный режим

  • Синхронный код подходит для небольших задач или сценариев, где производительность не имеет значения.
  • Асинхронный код идеально подходит для приложений с большим количеством операций ввода-вывода, таких как веб-серверы, где вы не хотите блокировать основной поток во время ожидания таких операций, как запросы к базе данных или HTTP-запросы.

Асинхронное/ожидание

Представленный в ES2017 (Node.js 7.6), async/await — это синтаксический сахар, построенный на основе промисов. Это позволяет писать асинхронный код синхронно, что делает его более читабельным и простым в обслуживании.

Пример (Async/Await):

   const fs = require('fs').promises;

   async function readFile() {
     try {
       const data = await fs.readFile('file.txt', 'utf8');
       console.log(data);
     } catch (err) {
       console.error(err);
     }
   }

   readFile();

Краткое содержание

  • Обратные вызовы просты, но могут привести к аду обратного вызова.
  • Обещания убирают ад обратных вызовов и обеспечивают лучшую обработку ошибок.
  • Async/Await делает асинхронный код синхронным, улучшая читаемость.

Выбор асинхронного или синхронизирующего кода зависит от вашего варианта использования. Для операций с большим количеством операций ввода-вывода всегда отдавайте предпочтение асинхронным шаблонам, чтобы основной поток не блокировался и ваше приложение отвечало на запросы.

Спасибо за чтение и удачного программирования! ?

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/hakimmohamed/async-patterns-in-nodejs-1e10?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3