0

上周我问了一个与此类似的问题,当我提到一个关于异步 JavaScript 的问题时,它立即被关闭了。我试图遵循使用异步回调函数的似乎有利的意见,尤其是在使用 fs 模块之类的东西时。但是此代码仍然无法继续工作。回调和其他异步(如异步函数/等待)本质上是否不同,它们是否更适合这个问题?

我正在尝试返回一个缓冲区,它是我创建的附加 fs 从头、主(routeString 变量)和尾 html 文件读取的 html。

我不明白为什么我可以 console.log 在 renderPage 函数中的 html 缓冲区,但它不会返回相同的缓冲区。我不能返回缓冲区吗?我真的很困惑,并且已经坚持了一段时间。

const createPage = (routeString, callback) => {
    fs.readFile(`${__dirname}/head.html`, 'utf-8', (err, data) => {
        let header = data;

        fs.readFile(`${__dirname}/public${routeString}.html`, 'utf-8', (err, data) => {
            let main = data;

            fs.readFile(`${__dirname}/tail.html`, 'utf-8', (err, data) => {
                let tail = data;
                let page = header + main + tail;

                return callback(page);
            });
        });
    });
}

const renderPage = (result) => {
    console.log(result); // html/buffer prints!!
    return result;
}

let newPage = createPage('/training', renderPage); // string argument point to training.html when used in function

console.log(newPage); // undefined
4

0 回答 0