gpt4 book ai didi

Node.js:如何从回调中正确返回对象?

转载 作者:搜寻专家 更新时间:2023-10-31 23:14:28 25 4
gpt4 key购买 nike

我仍然在思考回调。

在回调函数中定义/返回对象的正确方法是什么?

你可以在下面的代码片段中看到我的 2 个 console.logs,回调之外的一个当然是未定义的,我该如何定义它?

在我的 app.js 中:

  var tools = require('../models/tools.js');
app.get('/games', requireAuth, function (req, res) {
var gameqlist = tools.getMyGameQs(req, function(err, gameqlist){
console.log(gameqlist); // this is properly defined
return gameqlist; // not quite right
});
console.log(gameqlist); // this is undefined
res.render('games', {title:'Your Games!', gameqlist : gameqlist});


});

我有以下实用功能,效果很好:

工具.js:

var Gameq = require('../models/gameq');

module.exports = {
getMyGameQs: function (req, callback){
// find all game queues that a user is in
Gameq
.find({
'game.players.player_id' : req.user.id
})
.asc('created_at') // sort by date - get oldest first
.run(function(err, gameqlist) {
if(!gameqlist){
err = 'You are not in any games.';
}
return callback(err, gameqlist);
});
}
};

最佳答案

你不应该那样做。回调应该是异步的,因此调用 getMyGameQs 之后的代码有可能在回调之前执行。

你应该做什么 从回调内部调用“res.render”。

var tools = require('../models/tools.js');
app.get('/games', requireAuth, function (req, res) {
var gameqlist = tools.getMyGameQs(req, function(err, gameqlist){
res.render('games', {title:'Your Games!', gameqlist : gameqlist});
});
});

关于Node.js:如何从回调中正确返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8731459/

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