gpt4 book ai didi

javascript - 当 Promise 用于动态部分时,如何将静态和动态数据包含到快速渲染函数中?

转载 作者:行者123 更新时间:2023-12-02 20:51:05 24 4
gpt4 key购买 nike

我正在使用 Node 和 Express 开发一个 Web 应用程序,并且想要显示来自不同 JSON 文件的内容。有些包含静态内容,例如表格的标题和列标签。有些包含可以动态更改的用户数据。首先,我创建了两个不同的函数来读取 JSON 文件:

const readStaticData = filePath => {
fs.readFile(filePath, 'utf-8', (err, staticData) => {
if (err) throw err;
JSON.parse(staticData);
});
};

这适用于动态数据:

const readData = filePath => new Promise((resolve, reject) => {
fs.readFile(filePath, (err, fileData) => {
if (err) {
reject(err);
return;
}
try {
const object = JSON.parse(fileData);
resolve(object);
} catch(err) {
reject(err);
}
});
});

这就是我的 router.get() 函数到目前为止的样子:

router.get('/', (req, res) => {
Promise.all([
readData('./JSON/dynamicData1.json'),
readData('./JSON/dynamicData2.json')
])
.then((data) => {
res.render('home',
{
dynamicData1: data[0],
dynamicData2: data[1]
}
);
})
.catch((err) => {
console.log(err);
res.status(500).end();
});
});

所以我的渲染函数位于 Promise 中,但我不知道如何包含静态内容。我可以把我的readStaticData('./JSON/staticData1.json'); readStaticData('./JSON/staticData2.json');放在哪里渲染函数?它们不直接依赖于动态内容,例如无论是否有用户数据,标题都应该始终存在。

希望我没有遗漏重要信息,这是我的第一个问题。而且我也是编程新手。如果有人可以提供帮助,非常感谢!

最佳答案

我会做这样的事情。您只需需要一个 JSON 文件并准备好即可使用,因为它是静态的。

const staticData = require('./path/to/staticData.json') 

// const readStaticData = filePath => {
// fs.readFile(filePath, 'utf-8', (err, staticData) => {
// if (err) throw err;
// JSON.parse(staticData);
// });
// };

const readData = filePath => new Promise((resolve, reject) => {
fs.readFile(filePath, (err, fileData) => {
if (err) {
reject(err);
return;
}
try {
const object = JSON.parse(fileData);
resolve(object);
} catch(err) {
reject(err);
}
});
});

router.get('/', (req, res) => {
Promise.all([
readData('./JSON/dynamicData1.json'),
readData('./JSON/dynamicData2.json')
])
.then((data) => {
res.render('home',
{
dynamicData1: data[0],
dynamicData2: data[1],
staticData
}
);
})
.catch((err) => {
console.log(err);
res.status(500).end();
});
});

关于javascript - 当 Promise 用于动态部分时,如何将静态和动态数据包含到快速渲染函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61602196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com