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 异步编程的原理和用法。

上一篇:JavaScript常用方法封装1.0
下一篇:服务器

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月28日 02时16分24秒