gpt4 book ai didi

javascript - 无法从 javascript 函数调用获取返回值

转载 作者:行者123 更新时间:2023-12-03 03:55:40 24 4
gpt4 key购买 nike

我正在开发一个简单的 angular2/expressJS 应用程序。我在expressJS中有一个http get路由器调用,如下所示,它应该从mongoDB返回所有用户,并且效果很好:

app.get('/getusers', function(req, res) {

userModel.find({}, function(err, userlist) {
if (err) return handleError(err);
else {
return userlist;
}
});

现在我尝试将获取用户列表部分拆分为一个单独的函数,如下所示,以便可以重用。

app.get('/getusers', function(req, res) {
var tmpUsrList = getAllUsers();
console.log(tmpUsrList); //This prints undefined
res.send(tmpUsrList);
});

function getAllUsers() {
userModel.find({}, function(err, userlist) {
if (err) return handleError(err);
else {
console.log(userlist); //This prints the correct list
return userlist;
}
});
}

但是,返回后,该值变得未定义。我来自java背景,所以我可能会犯一些基本错误。感谢您的帮助!!

谢谢

最佳答案

您需要将其包装在这样的 promise 中:

app.get('/getusers', function(req, res) {
getAllUsers()
.then(tmpUsrList => {
console.log(tmpUsrList);
res.send(tmpUsrList);
})
.catch(err => handleError(err))
});

function getAllUsers() {
return new Promise((resolve, reject) => {
userModel.find({}, function(err, userlist) {
if (err) return reject(err);
// no need of else if you return
console.log(userlist);
resolve(userlist);
});
})
}

关于javascript - 无法从 javascript 函数调用获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44963301/

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