首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在app.get中异步使用express.js?

如何在app.get中异步使用express.js?
EN

Stack Overflow用户
提问于 2022-06-10 17:06:42
回答 1查看 174关注 0票数 1

我是速递的初学者。在我的index.js中,我有以下代码:

代码语言:javascript
复制
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是空的。如果我取消评论

代码语言:javascript
复制
//var gui =  [ 'Activities', 'Declensions', 'Conjugations' ];

然后评论掉

代码语言:javascript
复制
var gui = guiText("index", lang);

我的html文件正确地获取它需要显示的信息。如果我试着

代码语言:javascript
复制
var gui = await guiText("index", lang);

我收到消息了,因为这是不可能的。我怎么才能解决这个问题?

编辑:根据Heiko的建议(这是一个非常有趣的帖子,但对于初学者来说并不容易),我尝试使用回调。我的guiText函数现在是:

代码语言:javascript
复制
 guiText(page, lang, myCallback){

并以

代码语言:javascript
复制
 myCallback("index",{gui:result});

这一职能由以下机构调用:

app.get('/',(req,res) => { guiText("index",lang,app.res.render));

但是我得到了以下错误

TypeError:无法读取未定义的属性(读取“呈现”)

我该怎么写回电话呢?

EN

回答 1

Stack Overflow用户

发布于 2022-06-10 19:00:41

试试这个:

代码语言:javascript
复制
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回调变成一个异步函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72577747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档