为啥nodejs文件系统先读取控制台再读取文件

Posted

技术标签:

【中文标题】为啥nodejs文件系统先读取控制台再读取文件【英文标题】:why nodejs file system read console first then read the file为什么nodejs文件系统先读取控制台再读取文件 【发布时间】:2021-12-04 18:50:49 【问题描述】:

我可以使用 nodejs 文件系统读取文件:

const fs = require('fs');

fs.readFile('./assets/test1.txt', (err, data) => 
    if(err)
        console.log(err)
    
    console.log(data.toString())
)

console.log('hello shawn!')

为什么先读console.log('hello shawn!'),然后再读console.log(data.toString())

文件系统中是否还有其他内容先读取data,然后在下面读取console

【问题讨论】:

【参考方案1】:

这是因为.readFile是一个异步操作。它的最后一个参数是回调函数,在操作完成后启动。我建议阅读有关callbacks 和event loop 的内容。

您可以使用函数readFileSync 的同步版本或使用utils.promisify 将回调函数转换为promise 并使用async/await 然后example。

【讨论】:

以上是关于为啥nodejs文件系统先读取控制台再读取文件的主要内容,如果未能解决你的问题,请参考以下文章

nodeJS文件流和事件

Nodejs读取文件

NodeJS:读取一个大的 csv 文件

学习到的一点点的nodejs文件系统知识

为啥rstudio不能用桌面的文件

NodeJS - 等到流式传输多个文件完成后再继续编写代码