我想在匿名函数上使用await这是结果:
这是有效的方式
async function hello(){
return "hello";
}
let x = await hello();
console.log(x);
结果:
“你好”
这是我希望它工作的方式:
let x = await async function() {return "hello"};
console.log(x);
结果:
[AsyncFunction]
我想念什么?我是新来的诺言。
编辑: 我想添加()后匿名函数来调用它。这是带有实际异步代码的示例:
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 {域:null,_events:{完成:[Function:绑定resOnFinish]},_eventsCount:1,_maxListeners:未定义,输出:[],outputEncodings:[],..
res.code的结果
handlePromiseRejectionWarning:TypeError:将圆形结构转换为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}}
你等待的承诺,这是返回从异步函数,而不是异步函数本身。只需添加一个电话:
let x = await (async function() {return "hello"})();
console.log(x);
// or
console.log(await (async() => 'hello')())
我尝试过,我的console.log现在返回一个serverResponse对象。我将编辑我的帖子
@Couteau这就是为什么要在问题中放入实际的异步代码,而不仅仅是从异步函数返回字符串的原因(首先不应该这样做)
获得一个
serverResponse
是,如果你使用的是预期fetch
。如果要下载响应的内容,则需要调用其响应.json()
方法或类似方法,并等待它。