
Node
发布日期:2021-05-11 00:26:17
浏览次数:20
分类:精选文章
本文共 2240 字,大约阅读时间需要 7 分钟。
Node.js 异步编程
在 Node.js 中,异步编程是处理I/O操作的核心机制。它允许我们在完成当前操作后,立即进行下一步操作,而不会阻塞事件循环,这样程序的响应速度更快,资源利用率更高。
这个部分包含以下内容:
5.1 同步 API 与异步 API
- 同步 API:需要等待前一个操作完成后,才能执行后续操作。
- 异步 API:不需要等待操作完成,直接执行后续代码。
// 路径拼接const public = path.join(__dirname, 'public');// 请求地址解析const urlObj = url.parse(req, url);// 读取文件fs.readFile('./demo.txt', 'utf8', (err, result) => { console.log(result);});
5.2 同步 API 与异步 API 的区别(获取返回值)
- 同步 API 可以从返回值中获取结果。
- 异步 API 无法从返回值中获取结果,因为它们是在不同时间点执行的。
// 同步函数function sum(n1, n2) { return n1 + n2;}const result = sum(10, 20);// 异步函数function getMsg() { setTimeout(function() { if (true) { return { msg: 'Hello Node.js' }; } else { reject('失败了'); } }, 2000);const msg = getMsg();
5.3 回调函数
回调函数用于定义一个函数,让其他部分代码调用它。
// 定义回调函数function getData(callback) { getData(() => {});}
5.4 同步 API 与异步 API 的区别(代码执行顺序)
- 同步 API 从上到下依次执行,前面的代码会阻塞后面的代码执行。
- 异步 API 不会等待 API 执行完成后再执行后续代码。
console.log('代码开始执行');setTimeout(() => { console.log('2秒后执行的代码');}, 2000);setTimeout(() => { console.log('0秒后执行的代码');}, 0);console.log('代码结束执行');
5.5 Node.js 中的异步 API
// 读取文件fs.readFile('./demo.txt', (err, result) => {});// 创建服务器var server = http.createServer();server.on('request', (req, res) => {});
5.6 Promise
Promise 出现的目的是解决 Node.js 异步编程中回调地狱的问题。它允许我们在不使用回调的情况下管理异步操作。
let promise = new Promise((resolve, reject) => { setTimeout(() => { if (true) { resolve({ name: '张三' }); } else { reject('失败了'); } }, 2000);});promise.then(result => { console.log(result);}).catch(error => { console.log(error);});
5.7 异步编程
异步函数是异步编程语法的终极解决方案。它允许我们将异步代码写成同步的形式,使代码更清晰简洁。
// 异步函数async function fn() {};// 普通函数function fn() {};
5.8 async 和 await
- async 关键字:使函数变成异步函数,返回值是 Promise 对象。
- await 关键字:只能在异步函数中使用,用于等待 Promise 返回结果。
async function fn() { throw '发生了一些错误'; return 123;}fn().then(data => { console.log(data);}).catch(err => { console.log(err);});async function p1() { return 'p1';}async function p2() { return 'p2';}async function p3() { return 'p3';}async function run() { let r1 = await p1(); let r2 = await p2(); let r3 = await p3(); console.log(r1); console.log(r2); console.log(r3);}
通过这些内容,我们可以更好地理解 Node.js 异步编程的原理和用法。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月28日 02时16分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Flex 与 spring mvc 整合 BlazeDB
2023-01-26
flex 动态创建组件之容器自适应大小
2023-01-26
java 记事本程序_Java记事本程序Notebook
2023-01-27
Java 访问Kerberos认证的HDFS
2023-01-27
java 重载、重写、重构的区别
2023-01-27
Java 链表对象 链表翻转 对象中有对象的翻转 对象链表翻转指针
2023-01-27
java 集合 深度复制多种实现方式和使用注意事项
2023-01-27
Java 集合之 Queue
2023-01-27
Java 集合工具类--Arrays和Collections
2023-01-27
Java 集合框架综述,这篇让你吃透!
2023-01-27
Java 集合概览
2023-01-27
Java 面向对象编程概念
2023-01-27
java 高性能Server —— Reactor模型单线程版
2023-01-27
java split
2023-01-27
Java+MySQL实现学生管理系统
2023-01-27
Java+SQL Serve开发的《java电子商务系统》搭建开源实战+视频教程
2023-01-27
Java, Jquery, Html, 框架面试题目
2023-01-27
java.math.BigDecimal类
2023-01-27