我正在尝试设计一个网页。我有一个函数可以调用,以获取个人主页所需的所有信息。该代码的片段为:
exports.getHomePageData = function(userId, cb) {
var pageData = {};
pageData.userFullName = dbUtil.findNameByUserId(userId, function(err){
if (err) cb(err);
});
pageData.classes = dbUtil.findUserClassesByUserId(userId, function(err){
if (err) cb(err);
});
cb(pageData);
}
我遇到的问题是
cb(pageData)
在我完成元素设置之前就被调用了。我已经看到人们使用异步库来解决此问题,但是我想知道是否还有其他方法可以使我不需要更多模块。
最佳答案
一种可能的方法:
exports.getHomePageData = function(userId, cb) {
var pageData = {},
filler = function() {
if ('userFullName' in pageData
&& 'classes' in pageData)
cb(null, pageData);
};
dbUtil.findNameByUserId(userId, function(err, name) {
if (err) {
cb(err);
return;
}
pageData.userFullName = name;
filler();
});
dbUtil.findUserClassesByUserId(userId, function(err, classes) {
if (err) {
cb(err);
return;
}
pageData.classes = classes;
filler();
});
}
关于node.js - 在调用回调之前如何设置变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19624013/