聊一聊node.js的同步读取 和 异步读取

大前端在不断发展 , 越来越多人选择前端这个行业 , 为了不被时代甩开,跟着我一起回顾逐渐被时间冲刷的知识吧.
在这里插入图片描述
首先我们得知道node.js是个什么东西

Node.js是基于Chromev8引擎的JavaScript运行环境
他不是一个编程语言,某些js语法也可以直接使用

🎉🎉🎉 既然他不是一个编程语言, 那么问题来了(注意咯!)
浏览器和node.js端的区别是什么呢?
相同点就是: 它们都支持ECMAScript, 都有变量、运算、函数。。。等等
不同点: Node.js没有 window、dom、bom
浏览器中也没有Node.js中的模块 fs、http。。。等等

同步和异步

同步的执行顺序是: 从上到下的顺序,如果一个文件很大,那么他会等待这个文件执行完之后,在执行下面的代码

✨✨✨举例: 服务员给顾客点菜,等顾客点完菜之后才能给另一桌的顾客点菜

异步的执行顺序是: 执行一个很大的代码时 不会死等这个很大的代码执行完毕,会与其他小的文件一起执行

✨✨✨举例: 大家一起做核酸,扫码时我的手机出问题了,工作人员会让后面的人插到我的前面扫码,这个过程称之为异步
在这里插入图片描述

💥💥💥开始进入主题

fs.异步读取

格式:

fs.readFile('文件路径'[,选项], function (err, data) {
  if (err) {
    console.log('有错误,错误内容是', errr)
  } else {
    console.log('读入文件正确,内容是', data)
  }
});
  • 参数1:文件路径。 相对路径和绝对路径均可。

  • 参数2: 配置项,可不写。主要用来配置字符集。一般可设置为utf8,如果不设置该参数,文件内容会Buffer形式返回。

  • 参数3: 回调函数。这个回调函数在读完文件后自动被自动调用,并传入 err 和 data

    • 如读取成功,回调函数中的两个参数分别是:

      • err: null

      • data: 文件内容。如果不设置参数2,则返回二进制数据。可以使用 toString() 方法将二进制数据

        转为正常字符串

    • 如读取失败,回调函数中的两个参数分别是:

      • err: 错误对象
      • data: undefined
        通常会用以下方法读取文本
const fs = require("fs")
fs.readFile('文件路径',(err, data) => {
  if (err) throw err;
  console.log(data);
});

🛒🛒上面的data将会是一个Buffer对象类似于数组,它的元素为16进制的两位数,它表示读出来的内容在计算机中的二进制格式。它有一个toString()方法,可以用来把内容以UTF-8的格式转成字符串。

fs-readFile-观察并处理错误

node.js相对于浏览器来说错误有些扎眼, 对于前端工作人员来说并不友好

🎉🎉🎉如果读文件有错误, 我们该怎么解决呢?

如果读文件 有错误

fs.readFile('./02.txt12112',function(err, data) {
  // 如果读文件出错了(可能的原因:路径不对,文件不存在....)
  // err的值就不是null

  // if(出错)  {
  //   处理错误
  // } else {
  //   正常
  // }
  if(err){
    // throw: 抛出
    // throw 这个命令用来告诉node.js,这里有一个错误
    //       停止后续代码的执行
    console.log(err)
    return
    // throw err;

    // 尽早返回
  }
  console.log('读出的内容是', data)
})

在node.js中遇到的错误之后,应该观察错误说明

在这里插入图片描述

fs 同步读取文件

格式

const fs = require("fs")
let rs = fs.readFileSync('文件路径',"utf8");
console.log(rs)
  • api的名字后面有Sync(async是异步的,sync表示同步的)
  • 不是通过回调函数来获取值,而是像一个普通的函数调用一样,直接获取返回值
    👀👀👀试想一下,如果获取的途中,数据错误,但又想要后面的数据执行我们该怎么办呢👀👀👀
    实例:
console.log(1)
let res = fs.readFileSync('错误路径')
console.log(res)
console.log(2)//想要执行的代码

解决方法:用try. catch 结构 (属于ES语法,在浏览器中也可以使用)

try {
  const fs = require("fs")
	let rs = fs.readFileSync('文件路径',"utf8");
	console.log(rs)
} catch(err) {
  console.log(err)
}

在这里插入图片描述

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值