小编典典

如何正确读取带有 async/await 的文件?

all

我无法弄清楚async/是如何await工作的。我有点理解它,但我无法让它工作。

function loadMonoCounter() {
    fs.readFileSync("monolitic.txt", "binary", async function(err, data) {
       return await new Buffer( data);
  });
}

module.exports.read = function() {
  console.log(loadMonoCounter());
};

我知道,我可以使用readFileSync,但如果我这样做了,我知道我永远不会理解async/await我只会埋葬这个问题。

目标:调用loadMonoCounter()并返回一个文件的内容。

incrementMonoCounter()每次调用该文件(每次页面加载)都会增加该文件。该文件包含二进制缓冲区的转储,并存储在 SSD 上。

无论我做什么,我都会收到错误或undefined在控制台中。


阅读 64

收藏
2022-06-07

共1个答案

小编典典

要使用await/async您需要返回承诺的方法。如果没有包装器,核心 API
函数就不会这样做promisify

const fs = require('fs');
const util = require('util');

// Convert fs.readFile into Promise version of same    
const readFile = util.promisify(fs.readFile);

function getStuff() {
  return readFile('test');
}

// Can't use `await` outside of an async function so you need to chain
// with then()
getStuff().then(data => {
  console.log(data);
})

注意,readFileSync不接受回调,它返回数据或抛出异常。你没有得到你想要的值,因为你提供的函数被忽略了,你没有捕获实际的返回值。

2022-06-07