Node.js работает на основе однопоточной, управляемой событиями архитектуры, что означает, что он может обрабатывать множество операций одновременно, не блокируя основной поток. Это крайне важно для создания масштабируемых приложений, в которых такие задачи, как операции ввода-вывода (чтение файлов, запросы к базам данных и т. д.), должны выполняться асинхронно, чтобы избежать блокировки выполнения другого кода.
Синхронный код выполняет один шаг за раз, то есть каждый шаг должен завершиться перед переходом к следующему. Это может заблокировать основной поток, если операции выполняются медленно (например, чтение большого файла или запрос к базе данных).
Пример (синхронный код):
const fs = require('fs'); const data = fs.readFileSync('file.txt', 'utf8'); console.log(data);
С другой стороны, асинхронный код не блокирует основной поток. Вместо ожидания завершения операции программа продолжает выполнение и обрабатывает результат асинхронной операции, когда она готова.
Пример (асинхронный код):
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!');
Асинхронное/ожидание
Представленный в 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();
Выбор асинхронного или синхронизирующего кода зависит от вашего варианта использования. Для операций с большим количеством операций ввода-вывода всегда отдавайте предпочтение асинхронным шаблонам, чтобы основной поток не блокировался и ваше приложение отвечало на запросы.
Спасибо за чтение и удачного программирования! ?
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3