Node.js 在单线程事件驱动架构上运行,这意味着它可以同时处理许多操作,而不会阻塞主线程。这对于创建可扩展的应用程序至关重要,其中 I/O 操作(读取文件、查询数据库等)等任务需要异步发生,以避免阻塞其他代码的执行。
同步代码一次执行一个步骤,这意味着每个步骤必须完成才能进入下一个步骤。如果操作缓慢(例如,读取大文件或查询数据库),这可能会阻塞主线程。
示例(同步代码):
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!');
异步/等待
async/await 在 ES2017 (Node.js 7.6) 中引入,是构建在 Promise 之上的语法糖。它允许以类似同步的方式编写异步代码,使其更具可读性且更易于维护。
示例(异步/等待):
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();
选择异步与同步代码取决于您的用例。对于 I/O 密集型操作,始终更喜欢异步模式,以保持主线程非阻塞和应用程序响应。
感谢您的阅读,祝您编码愉快! ?
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3