【发布时间】:2019-11-12 12:16:14
【问题描述】:
我目前正在编写一个登录服务器函数,但我无法弄清楚为什么我所做的 posmise 没有被调用
我正在使用带有 mongoose 的 mongodb 作为后端,该后端使用有效的 User.findOne 连接。我无法弄清楚为什么 Test 和 test2 的底部 console.log 永远不会被解雇。
我对 Promise 和 async 很陌生,我不知道我缺少什么
class HandlerGenerator {
login (req, res) {
console.log('debguh1')
let username = req.body.username;
let password = req.body.password;
let checkUsername = "";
let checkPassword = "";
var lData = {
username: req.body.username,
password: req.body.password
};
var myPromise = () => {
return new Promise((resolve, reject) => {
console.log('db2')
User.findOne(lData , function(err, userLogin){
if(err){
console.log(err);
return
}
console.log(userLogin)
checkUsername = userLogin.username;
checkPassword = userLogin.password;
});
});
};
var callMyPromise = async () => {
var result = await (myPromise());
// call code here
console.log("Test1")
resolve(result);
//return result
};
callMyPromise().then(function(result) {
console.log('Test2')
res.json(result);
});
}
}
【问题讨论】:
-
评论解析,取消评论返回。但也要注意 callMyPromise 是多余的,你可以直接调用 myPromise。
-
你永远不会兑现你的第一个承诺。您需要在
User.findOne()回调中的某处解决。 -
声明所有这些只调用一次的函数有什么意义?
标签: javascript express promise async-await