gpt4 book ai didi

javascript - Express session 内部回调返回未定义外部

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:22 24 4
gpt4 key购买 nike

我有一条用 Express 编写的路线,如下所示:

app.get("/route", function(req, res){
if (someBoolean){
someFunction(stuff, function(user){
...
req.session.user = user;
});
}
res.render("route");
}

someBoolean为true时,应该设置 session 。但是,在转到不同页面后,req.session.user 返回为未定义。然而,检查 someFunction 中的 req.session.user 会返回定义。我发现 session 在 someFunction 范围之外变得未定义的解决方案是将 res.render("route") 移动到 someFunction 中,如下所示:

app.get("/route", function(req, res){
if (someBoolean){
someFunction(stuff, function(user){
...
req.session.user = user;
res.render("route");
});
}
}

然而,当someBoolean为假时,这会导致路由失败。我认为这是由 Node.js 的异步特性引起的,但我不确定。到底是什么导致了这种情况的发生,这是正确的解决方案吗?

最佳答案

最简单的解决方案是:

app.get("/route", function(req, res){
if (someBoolean){
someFunction(stuff, function(user){
...
req.session.user = user;
res.render("route");
});
}else{
res.render("route");
}
}

使用 promise ,你可以这样做(首先你 promise someFunction):

app.get("/route", function(req, res){
Promise.resolve()
.then(function(){
if(someBoolean){
return someFunction(stuff)
.then(function(user){
res.session.user = user;
});
}
}).then(function(){
res.render("route");
});
}

关于javascript - Express session 内部回调返回未定义外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31394800/

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