javascript - <Buffer 72 65 74 72 69 65 76 65 72> 请解释一下这在js中是什么意思

标签 javascript asynchronous promise async-await es6-promise

我正在练习 javascript,想了解 <Buffer 72 65 74 72 69 65 76 65 72>错误。

我正在从一个名为dog.txt的文件中读取数据。我发现当我将“数据”放入 console.log 中时,我看到了这个 <Buffer 72 65 74 72 69 65 76 65 72>错误。我知道解决方案是将“${data}”放入console.log中以获得预期结果。其实我想知道什么<Buffer 72 65 74 72 69 65 76 65 72>意思是。

这是代码

    return new Promise ((resolve,reject)=>{
        fs.readFile(file,(err,data)=>{
            if(err){reject("Data cannot be found")}else
            resolve(data);
        })
    })
}



const getdata=async()=>{
    try{
        const data=await ReadfilePro(`./dog.txt`);
    console.log(data);
    }catch(err){
        console.log(err);
    }
}

getdata();

这里的dog.txt文件只包含这个狗的名字“retriever”,不带引号。

由于上述代码,我在控制台中得到了这个 <Buffer 72 65 74 72 69 65 76 65 72> .

我希望你能给出详细的答案,如果这是一个愚蠢的问题,我很抱歉。

我不需要解决方案,我想要一个解释。谢谢

最佳答案

您正在读取的是字节缓冲区。 NodeJS 不能也不会假设您正在读取字符串,因为这是一个比人们想象的更难证明的假设。

其背后的原因是 readFile 位于您可用的最低抽象级别之一。如果人们知道数据的格式,他们就应该在此基础上编写代码。

幸运的是,有转换方法。假设您知道缓冲区是有效的 utf8,调用 data.toString('utf8') 将尝试将缓冲区转换为 utf8。

关于javascript - <Buffer 72 65 74 72 69 65 76 65 72> 请解释一下这在js中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57737597/

相关文章:

javascript - 从嵌套的 Promise.all 返回值

javascript - 我需要的是一连串的 promise 吗

javascript - 异步 javascript promise 使用 settimeout 调用

javascript - 使用 puppeteer 永远抓取同一页面

javascript - 如何从异步调用返回响应?

javascript - AngularJS : Asynchronously initialize filter

java - 在 RESTFul Web 服务中使用 JMS

javascript - Redux 返回默认值

javascript - node.js mysql LIKE语句用法

javascript - setTimeout 函数完成后调用 Promise