如何在express中使用fs解决异步读取文件问题?

如何在express中使用fs解决异步读取文件问题?,express,async-await,fs,Express,Async Await,Fs,不幸的是,我远离这里的大多数人在js知识和一次又一次的问题,设计我的应用程序在一个同步的顺序工作流! 最主要的是——我不理解用一种简单的方式来设计像readfile这样的代码——代码部分在块下,在块中执行某些东西和(在本例中)加载数据,在块中的执行完成之前不会执行——和(在本例中)数据(sKey)保持未定义,尽管块中的控制台本身确认它定义正确?! 也许这是EXPRESS的一些特定功能-但是这个js必须在EXPRESS中运行-请给出任何有帮助的建议 '''const fsBase = requir

不幸的是,我远离这里的大多数人在js知识和一次又一次的问题,设计我的应用程序在一个同步的顺序工作流! 最主要的是——我不理解用一种简单的方式来设计像readfile这样的代码——代码部分在块下,在块中执行某些东西和(在本例中)加载数据,在块中的执行完成之前不会执行——和(在本例中)数据(sKey)保持未定义,尽管块中的控制台本身确认它定义正确?! 也许这是EXPRESS的一些特定功能-但是这个js必须在EXPRESS中运行-请给出任何有帮助的建议

'''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
绝对不是
未定义的
,而是一个承诺。请提供一份报告。