我试图在匿名函数上使用await,这是结果:
以下是可行的方式。
async function hello(){
return "hello";
}
let x = await hello();
console.log(x);
结果:
"你好"
这是我希望它工作的方式:
let x = await async function() {return "hello"};
console.log(x);
结果:
[AsyncFunction]
我错过了什么吗?我对 Promise 很新。
编辑: 我尝试在匿名函数后面添加 () 来调用它。这里是使用实际 Async 代码的示例:
let invitationFound = await (async function (invitationToken, email){
return models.usersModel.findOneInvitationByToken(invitationToken, email)
.then(invitationFound => {
return invitationFound;
})
.catch(err =>{
console.log(err);
});
})();
console.log(invitationFound);
return res.status(200).json({"oki " : invitationFound});
console.log的结果:
ServerResponse { domain: null, _events: { finish: [Function: bound resOnFinish] }, _eventsCount: 1, _maxListeners: undefined, output: [], outputEncodings: [], .....
res.code的结果:
handledPromiseRejectionWarning: TypeError: Converting circular structure to JSON
我认为错误不是来自models.usersModel.findOneInvitationByToken,因为在第一个情况下使用它时它可以正常工作。
let userFound = await test(invitationToken, email);
编辑2:
我找到了第二个问题!我忘记将参数放入括号中。
let invitationFound = await (async function (invitationToken, email){
return models.usersModel.findOneInvitationByToken(invitationToken, email)
.then(invitationFound => {
return invitationFound;
})
.catch(err =>{
console.log(err);
});
})(invitationToken, email);
console.log(invitationFound);
return res.status(200).json({"oki " : invitationFound});
结果:
{ oki: {mydata} }