码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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”,代码如下:

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

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

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

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

    2. HTTP操作

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

    (1)加载http核心模块。

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

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

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

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

    HTTP操作示例如下:

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

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

    1. const fs = require('fs');
    2. fs.readFile('a.txt', 'utf8', (err, res1) => {
    3. console.log(res1.toString());
    4. fs.readFile('b.txt', 'utf8', (err, res2) => {
    5. console.log(res2.toString());
    6. });
    7. });

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

    1. PS D:\WorkSpace\node_mongodb_vue3_book\codes\chapter3> node callback.js
    2. a文件是独孤九剑
    3. b文件是吸星大法

  • 相关阅读:
    Spark Rdd之mapToPair,flatMapToPair
    Redis实现消息队列
    SpringBoot中@ConfigurationProperties的使用
    元素使用 align-items center 和 overflow auto 之后,部分内容显示不全
    某大型建设公司薪酬体系设计项目成功案例纪实
    【C++ 操作符重载:定制自己的运算符行为】
    Java中的代码优雅重构实战
    数据结构02 队列及其应用【C++实现】
    Redis—听说你速度跟甲斗一样快?——cluster
    Jackson 2.x 系列【29】Spring Boot 集成之 Redis 序列化/反序列化
  • 原文地址:https://blog.csdn.net/brucexia/article/details/141053300
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号