我是速递的初学者。在我的index.js中,我有以下代码:
app.get('/', (req, res) => {
var gui = guiText("index", lang);
//var gui = [ 'Activities', 'Declensions', 'Conjugations' ];
res.render("index", {gui: gui});
console.log ("sent gui", gui)
})guiText("index",lang)是一个异步函数,它调用sqlite来获取本地化文本。当运行这段代码时,我可以看到res.render是在guiText()返回之前发送的,所以gui是空的。如果我取消评论
//var gui = [ 'Activities', 'Declensions', 'Conjugations' ];然后评论掉
var gui = guiText("index", lang);我的html文件正确地获取它需要显示的信息。如果我试着
var gui = await guiText("index", lang);我收到消息了,因为这是不可能的。我怎么才能解决这个问题?
编辑:根据Heiko的建议(这是一个非常有趣的帖子,但对于初学者来说并不容易),我尝试使用回调。我的guiText函数现在是:
guiText(page, lang, myCallback){并以
myCallback("index",{gui:result});这一职能由以下机构调用:
app.get('/',(req,res) => { guiText("index",lang,app.res.render));
但是我得到了以下错误
TypeError:无法读取未定义的属性(读取“呈现”)
我该怎么写回电话呢?
发布于 2022-06-10 19:00:41
试试这个:
app.get('/', async (req, res) => {
var gui = await guiText("index", lang);
//var gui = [ 'Activities', 'Declensions', 'Conjugations' ];
res.render("index", {gui: gui});
console.log ("sent gui", gui)
})您可以看到,我所做的就是在(req, res)之前添加(req, res)关键字,在guiText("index", lang); await尝试之前添加await,因为您忘记了将整个app.get回调变成一个异步函数。
https://stackoverflow.com/questions/72577747
复制相似问题