Kar*_*son 8 javascript node.js
我正在尝试使用以下代码:
'use strict';
var fs = require('fs');
var fileName = 'readme.txt';
var str = fs.readFile(fileName, 'utf8', function (err, data) {
if (err) {
console.log(err);
throw err;
}
return data;
});
console.log('result read: ' + str);
Run Code Online (Sandbox Code Playgroud)
readme.txt文件:
console.log('working');
Run Code Online (Sandbox Code Playgroud)
我正在尝试显示以下内容:
result read: console.log('working');
Run Code Online (Sandbox Code Playgroud)
Mar*_*nde 13
readFile是异步执行的,所以data
只能在回调函数内部访问,如果你想让它同步,你应该使用readFileSync
异步:
'use strict';
const fs = require('fs');
const fileName = 'readme.txt';
fs.readFile(fileName, 'utf8', function (err, data) {
if (err)
return console.log(err);
console.log('result read: ' + data);
});
Run Code Online (Sandbox Code Playgroud)
同步:
var str = fs.readFileSync(fileName, 'utf8'); // This will block the event loop, not recommended for non-cli programs.
console.log('result read: ' + str);
Run Code Online (Sandbox Code Playgroud)
UPDATE
您可以使用从回调API util.promisify
转换fs.readFile
为promise API.
const fs = require('fs');
const { promisify } = require('util');
const readFile = promisify(fs.readFile);
(async() => {
try {
const result = await readFile('readme.txt', 'utf8');
consle.log(result);
} catch(e) {
console.error(e);
}
})();
Run Code Online (Sandbox Code Playgroud)
在节点10中,您可以使用fs/promises
并避免使用util.promisify
const fs = require('fs').promises;
(async() => {
try {
const result = await fs.readFile('readme.txt', 'utf8');
consle.log(result);
} catch(e) {
console.error(e);
}
})();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9137 次 |
最近记录: |