Node.js中的异步API

【图书介绍】《Node.js+MongoDB+Vue.js全栈开发实战》-CSDN博客

《Node.js+MongoDB+Vue.js全栈开发实战(Web前端技术丛书)》(邹琼俊)【摘要 书评 试读】- 京东图书 (jd.com)

Node.js中常见的异步API有文件读取、HTTP操作。

  1. 文件读取

文件读取使用fs.readFile()方法,该方法的第一个参数是要读取的文件路径,第二个参数是一个回调函数。回调函数又接收两个参数:一个错误对象(如果读取失败)和文件内容。如果读取成功,错误对象会是null,而文件内容会作为第二个参数传递给回调函数。

下面通过一个示例来演示文件读取。

(1)新建文件"异步.js",代码如下:

复制代码
//文件读取
const fs = require('fs');
fs.readFile('./book.txt', (err, result) => {
  // 在这里就可以通过判断 err 来确认是否有错误发生
  if (err) {
    console.log('读取文件失败了');
  } else {
    // console.log(result);//<Buffer e3 80 8a e6 80 
    console.log(result.toString());
  }
});
console.log('文件读取完毕');

(2)执行node异步.js,结果如下:

复制代码
PS D:\WorkSpace\node_mongodb_vue3_book\codes\chapter3> node 异步.js
文件读取完毕
《怜花宝鉴》是一代怪侠王怜花倾尽毕生心血所著。上面不但有他的武功心法,也记载着他的下毒术,易容术,苗人放蛊,波斯传来的摄心术。

文件中存储的其实都是二进制数据0和1,但这里为什么看到的不是0和1呢?因为我们通过toString方法将它们转换为认识的字符了。

  1. HTTP操作

HTTP操作具体包括以下4个方面:

(1)加载http核心模块。

(2)使用http.createServer()方法创建一个Web服务器。

(3)注册request请求事件:server.on('request', function () {})。

(4)绑定端口号,启动服务器。

当服务器接收到客户端请求,就会自动触发request请求事件,然后执行第二个参数---回调处理函数。

HTTP操作示例如下:

复制代码
//HTTP操作
const http = require('http');
var server = http.createServer();
server.on('request', (req, res) => {});
server.listen(3000, function () {
  console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问');
});

如果异步API后面的代码执行需要依赖当前异步API的执行结果,但实际上后续代码在执行的时候异步API还没有返回结果,这个问题要怎么解决呢?通常可以采用回调和async&&await来解决。例如,依次读取a.txt文件、b.txt文件。先来看一下回调的实现方式,callback.js中添加如下代码:

复制代码
const fs = require('fs');
fs.readFile('a.txt', 'utf8', (err, res1) => {
  console.log(res1.toString());
  fs.readFile('b.txt', 'utf8', (err, res2) => {
    console.log(res2.toString());
  });
});

执行node callback.js,结果如下:

复制代码
PS D:\WorkSpace\node_mongodb_vue3_book\codes\chapter3> node callback.js
a文件是独孤九剑
b文件是吸星大法
相关推荐
逻辑01 小时前
安装 Claude Code 完整指南(用户级 Node.js 环境)
node.js·claude code
Wang's Blog1 小时前
Vibe Coding一人即团队系列54:云服务器 Node.js 与 MySQL 9 环境搭建及配置指南
服务器·人工智能·mysql·node.js
FungLeo1 小时前
成为全栈·Node 后端篇·结构化日志与请求链路追踪
node.js·结构化日志·成为全栈·请求链路
Flynt5 小时前
NestJS 12升级踩坑:从Webpack到Rspack,我折腾了一整个周末
typescript·node.js·nestjs
FungLeo18 小时前
成为全栈·Node 后端篇·配置管理:环境变量、多环境与密钥安全
node.js·环境变量·多环境配置·密钥安全
FungLeo19 小时前
成为全栈·Node 后端篇·错误处理:异常分层与全局捕获
node.js·错误处理·异常分层·全局捕获·成为全栈
百万运营Pro1 天前
用 Astro + Supabase 从零构建全网盘聚合搜索引擎:PGroonga 中文检索实战
搜索引擎·前端框架·node.js·个人开发·学习方法·ai编程·资源分享
小婉2 天前
我用 Next.js + React Flow 从零搭建了一个可视化 AI 工作流编排平台
前端·人工智能·node.js
抓不住时间的沙2 天前
N1搭建守护环境以及重装 Armbian 后完整恢复整套守护环境,清理日志步骤
node.js
meilindehuzi_a2 天前
从域名到数据库:React + Node.js 项目部署全流程与用户访问链路
数据库·react.js·node.js