如何在express中使用fs解决异步读取文件问题?
不幸的是,我远离这里的大多数人在js知识和一次又一次的问题,设计我的应用程序在一个同步的顺序工作流! 最主要的是——我不理解用一种简单的方式来设计像readfile这样的代码——代码部分在块下,在块中执行某些东西和(在本例中)加载数据,在块中的执行完成之前不会执行——和(在本例中)数据(sKey)保持未定义,尽管块中的控制台本身确认它定义正确?! 也许这是EXPRESS的一些特定功能-但是这个js必须在EXPRESS中运行-请给出任何有帮助的建议如何在express中使用fs解决异步读取文件问题?,express,async-await,fs,Express,Async Await,Fs,不幸的是,我远离这里的大多数人在js知识和一次又一次的问题,设计我的应用程序在一个同步的顺序工作流! 最主要的是——我不理解用一种简单的方式来设计像readfile这样的代码——代码部分在块下,在块中执行某些东西和(在本例中)加载数据,在块中的执行完成之前不会执行——和(在本例中)数据(sKey)保持未定义,尽管块中的控制台本身确认它定义正确?! 也许这是EXPRESS的一些特定功能-但是这个js必须在EXPRESS中运行-请给出任何有帮助的建议 '''const fsBase = requir
'''const fsBase = require('fs');
const fs = fsBase.promises;
const fn = async () => {
const data = await fs.readFile('example.txt', 'utf8');
console.log("in readfile: " + data);
//works perfectly
return data;
};
sKey = fn();
console.log("after readfile: " + sKey);
//returns sKey undef'''
假设您在回调函数中获取数据,而不是试图从return语句获取数据:
const fs=require('fs');
const fn = async () => {
let data;
await fs.readFile('example.txt', 'utf8',(err,data_)=>{
data=data_;
});
console.log("in readfile: " + data);
return data;
};
sKey=fn();
console.log("after readfile: " + sKey);
fs.promissions
方法不接受回调。在您发布的代码中,sKey
绝对不是未定义的
,而是一个承诺。请提供一份报告。