如何在NodeJS中读取文件()?

时间:2018-02-18 09:25:53

标签: javascript node.js asynchronous

我正在研究Node.JS,我对此有疑问。

我必须阅读一个文件。我是用&fs; fs'节点和' fs.readFile()' FUNC。 这是一个代码

const fs = require('fs');
let input;
fs.readFile('./'+config.file, (err, data) => { 
    input = data.toString('utf-8');
});

console.log(input) //!!! it gives me 'undefined' result but i expect file's data

我没有任何想法如何解决这个问题。只有我知道这是异步功能。

希望,你会帮助我:3

2 个答案:

答案 0 :(得分:1)

由于您的代码是异步的,因此在完成文件读取之前会记录您的变量 您可以使用函数并返回const fs = require('fs'); function myReadFile() { return new Promise((resolve, reject) => { fs.readFile('myfile.txt', (err, data) => { if (err) reject(err); resolve(data.toString()); }); }) } myReadFile().then((contents) => { console.log(contents) });

<key>NSAppTransportSecurity</key>
 <dict>
 <key>NSAllowsArbitraryLoads</key>
 <true/>
</dict>

答案 1 :(得分:0)

它是异步的,因此它将首先执行同步代码,这就是输入仍未定义的原因。首先执行同步代码然后执行异步代码。因为fs.readFile是异步的,它将在event loop.

中的console.log()之后执行
const fs = require('fs');
let input;
fs.readFile('./'+config.file, (err, data) => { 
    input = data.toString('utf-8');
    console.log(input)
});

这应记录您的输入

有关this article

中异步代码的更多信息