Node.js 如何使节点fs与类异步/等待?
我在制作一个可以异步的解析器时遇到了困难。我要么得到承诺的回报,要么得到未定义的回报。在线阅读了一些文档之后,我非常确定我需要设置一个try/catch块,但是我不知道fs.readFile方法在哪里。任何帮助都将不胜感激Node.js 如何使节点fs与类异步/等待?,node.js,asynchronous,fs,Node.js,Asynchronous,Fs,我在制作一个可以异步的解析器时遇到了困难。我要么得到承诺的回报,要么得到未定义的回报。在线阅读了一些文档之后,我非常确定我需要设置一个try/catch块,但是我不知道fs.readFile方法在哪里。任何帮助都将不胜感激 const fs = require('fs') class CSV { constructor (fileName, buffer) { this.fileName = fileName; this.buffer = buffer;
const fs = require('fs')
class CSV {
constructor (fileName, buffer) {
this.fileName = fileName;
this.buffer = buffer;
}
async parseCSV () {
let csv = this.fileName
let buff = this.buffer
let stream = await fs.readFile(csv, buff, (err, data) => {
if (err) console.log(err)
data = data.split('\r').toString().split('\n')
this.returnData(data)
})
return stream
}
returnData(data) {
return data
}
}
let test = new CSV('./topsongs.csv', 'utf8')
let data = await test.parseCSV()
console.log(data)
module.exports = CSV
wait操作符用于等待承诺。它只能在异步函数中使用。
fs.readFile
不返回承诺,您需要一个承诺包装器。您可以:
util.Promisify
手动提示
const fs = require('fs');
const promisify = require('util').promisify;
const readFile = promisify(fs.readFile);
let stream;
try {
stream = await fs.readFile(csv, buff); // callback omitted, `data` param returned instead
} catch (err) {
console.log(err);
}
const fs = require('fs-extra');
let stream;
try {
stream = await fs.readFile(csv, buff);
} catch (err) {
console.log(err);
}