Я новичок в JavaScript и пишу JS код в Node.JS v12.13.1.
Я пытаюсь прочитать файл асинхронно и вернуть строковое значение с помощью обещаний.
Пока что большинство функций возвращают значение undefined, в то время как другие возвращают значение [Promise объекта].
Функция writeFile работает, и я могу проверить, что out.txt содержит " Тестовые данные "
Я провел исследование постов переполнения стека, и я просто запутался.
Как правильно прочитать файл с помощью async / await?
Использование файловой системы в node.js с asyn c / await
Использование Promises с fs.readFile в al oop
Документация API:
https://nodejs.org/api/fs.html#fs_fs_promises_api
Может ли кто-нибудь объяснить мне, что мне не хватает? Это было бы очень признательно, так как я исследовал методом проб и ошибок около 3 полных дней.
Спасибо!
function writeFile(data) {
const fs = require('fs');
fs.writeFile('out.txt', data, (err) => {
if (err) throw err;
});
}
function readFile1() {
const fs = require('fs').promises;
(async() => {
try {
const result = await fs.readFileSync('out.txt', 'utf8');
console.log(result);
} catch(e) {
console.error(e);
}
})();
}
function readFile2() {
const fs = require('fs');
const { promisify } = require('util');
const readFile = promisify(fs.readFile);
(async() => {
try {
const result = await readFile('out.txt', 'utf8');
console.log(result);
} catch(e) {
console.error(e);
}
})();
}
function readFile3() {
const fs = require('fs');
const util = require('util');
const readFile = util.promisify(fs.readFile);
function getStuff() {
return readFile('out.txt', 'utf8');
}
getStuff().then(data => {
console.log("Inside getStuff Method: "+data);
})
}
function readFile4() {
const fs = require('fs');
const fsPromises = fs.promises;
try {
return fsPromises.readFile('out.txt');
} catch (err) {
console.error('Error occured while reading file!', err);
}
}
async function readFile5() {
const fs = require('fs');
const fsPromises = fs.promises;
let fileHandle = null;
try {
fileHandle = await fsPromises.open('out.txt');
await fileHandle.readFile();
} finally {
if (fileHandle) {
await fileHandle.close();
}
}
return fs.readFileSync('out.txt', 'utf8');
}
writeFile("Test Data");
myString = readFile5();
console.log("The String Value is: " + myString);