Node.js 学习系列(四)—— 回调函数

2023-11-10

Node.js 异步编程的直接体现就是回调。

异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。

回调函数在任务完成后就会被调用,Node 使用了大量的回调函数,Node 的所有 API 都支持回调函数。

例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。

回调函数一般作为函数的最后一个参数出现,语法格式如下:

function foo1(name, age, callback) { }
function foo2(value, callback1, callback2) { }

阻塞代码

新建文件 text.txt ,内容如下:

https://www.baidu.com/

新建 main.js 文件,代码如下:

var file = require("fs");

var data = file.readFileSync('text.txt');

console.log(data.toString());
console.log("Program End!")

打开终端,执行代码:

在这里插入图片描述

非阻塞代码

修改 main.js 文件,改为回调函数形式,如下:

var file = require("fs");

file.readFile('text.txt',(err,data)=>{
	if(err) return console.log('file read err')
	console.log('data:',data.toString())
})

console.log("Program End!")

再次执行文件,执行结果如下:

在这里插入图片描述

上面两个实例可以看出,阻塞是按顺序执行的,而非阻塞是不需要按顺序的。所以如果需要处理回调函数的参数,就需要写在回调函数内。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js 学习系列(四)—— 回调函数 的相关文章

随机推荐

  • userdel: user xxx is currently used by process xxx 已解决

    第一种方法 说明有进程正在使用这个用户 就是以该用户的身份运行 把对应的进程杀了再删 ps u username awk print 1 grep vi pid xargs kill 9 deluser username 另一种方法 use
  • 逻辑回归,决策树,SVM,随机森林,GBDT,Xgboost,lightGBM的评分效果观察

    https blog csdn net weixin 41710583 article details 85016622
  • 面向对象-- 属性查找顺序以及绑定方法

    面向对象编程思想的本质就是将数据和功能绑定在一起 对象本质是容器 其将数据和功能整合在一起 所以在Python中 一切皆对象 对象 数据与功能的结合体 类 种类 相当于诸多对象共有的特征 数据 功能 类只描述对象公共的特征 不同的特征由对象
  • 【蚁群算法栅格图路径规划python】

    蚁群算法栅格图路径规划python 简单说几句 python代码 0 预安装库 1 调用模版 2 地图文件 3 栅格图 迭代图 3 ACO类 简单说几句 简单说几句 算法的基本逻辑请看其他文章 很多 不介绍 本文旨在提供一份python代码
  • WSL 错误 System has not been booted with systemd as init system (PID 1). Can‘t operate

    描述 项目 描述 操作系统 Windows 10 专业版 版本 WSL 2 前情 在 适用与 Linux 的 Windows 的子系统 WSL 默认情况下是无法使用 systemctl 命令 使用该命令 WSL 将抛出如下错误 System
  • pyinstaller打包exe文件

    pyinstaller是一个python第三方库 可以安装 用于打包py脚本文件成exe可执行程序给其他人使用 而不是需要python解释器执行py脚本 指令如下 pyinstaller F w py文件目录 F是只生成一个EXE文件 w是
  • 文字滚动

    不用JavaScript 不开定时器也可以实现文字滚动的效果 仅仅需要用一对
  • java 异常就是出错?快醒醒吧

    1 异常是什么 首先异常 Exception 和错误 Error 并不能划等号 顾名思义 它只是程序运行出现了不正常的情况 2 异常的家族 从图中我们可以看出Error和Exception属于一个家族的两兄弟 Exception中又分为两类
  • 关于RedisTemplate和StringRedisTemplate

    最近在开始在学习Redis以及如何在Java当中去使用Redis Redis是什么我这里就不说了 我主要想说的是Redis和Java当中Spring结合起来的时候 使用到的RedisTemplate和StringRedisTemplate
  • pycharm读取图片

    把图片整体存入数据库 encoding utf 8 import pymysql conn pymysql connect host 127 0 0 1 port 3306 user root passwd root db test sql
  • JS 取出某数组前n位的数据

    别再用 for 循环了 用 splice arr arr splice 0 n
  • 【Android】ViewBinding+DataBinding+MVVM新手快速上手

    为什么写这篇博客 网上大部分博客 代码量都比较大 把实际的业务都代入进去了 这篇博客的目的 就是为了讲解基本原理和使用思路 然后给出一个最简单的Demo 这里不讲解具体用法 那样篇幅会太长 直接看Demo代码就行 什么是ViewBindin
  • SFP光模块接口说明

    SFP光模块接口说明 1 引脚定义 Pin Name Function Description 1 VeeT 发射部分地 2 TX Fault 发射部分报错 3 TX Disable 关断发射 高电平或悬空有效 4 MOD DEF2 模块定
  • pclint检查linux代码,linux pclint

    这个插件只是分析已经生成的报告 并非去检查代码 比如配置的规则中有cppcheck库的 那么运行sonar runner时只会读取你用cppcheck检查后生成的问题报告 我也遇到过同样的问题 我是这样解决的 1 要先安装cppcheck工
  • 利用Github搭建自己专属博客

    这是一个在Windows简易的搭建博客的方法 建立使用Jekyll构建自己的博客 所以这一篇文章采用fork别人的模板来构建 偷懒 在此之前需要满足一下条件 注册一个Github账号 本地安装Git 并且能实现Git向自己的仓库push文件
  • minikube 实战篇 - 镜像打包部署 - 1

    实战篇 镜像打包 如果你是一个JAVA开发人员 需要把spring项目部署到minikube中 该怎么操作是一个需要探索的问题 这篇文章会讲解如何打包部署项目 1 生成demo项目 在浏览器端输入https start spring io
  • 第9章 Stata聚类分析

    目录 9 1划分聚类分析 1 数标准化处理 2 K个平均数的聚类分析 3 K个中位数的聚类分析 案例延伸 1 采用其他相异性指标 2 设置聚类变量的名称 3 设置观测样本为初始聚类中心 4 排除作为初始聚类中心的观测样本 9 2层次聚类分析
  • gdb 常用命令

    run r 运行 运行带参数的可执行文件 r 后面接参数 例如 gdb executablefile gdb r arg1 arg2 arg3 continue c 继续运行 next n 单步运行 step s 如果有函数则进入函数执行
  • Python 列表推导式、矩阵、格式化输出

    列表推导式 列表推导式提供了从列表 元组创建列表的简单途径 语法 表达式 for语句 if语句 创建并返回一个列表 if语句可选 示例 list1 1 2 3 4 使用元组也行 list2 x 2 for x in list1 print
  • Node.js 学习系列(四)—— 回调函数

    Node js 异步编程的直接体现就是回调 异步编程依托于回调来实现 但不能说使用了回调后程序就异步化了 回调函数在任务完成后就会被调用 Node 使用了大量的回调函数 Node 的所有 API 都支持回调函数 例如 我们可以一边读取文件