如何在js中等待if语句内部的结果
How to wait for results inside an if statement in js?
我正在为web应用程序构建node.js后端,当我提交表单时,我会进行各种验证。其中之一是检查是否已经存在具有相同电子邮件地址的邀请。(isUserAlreadyInvited函数)
我为此创建了一个函数,但当我调用它时,我想响应并没有那么快,即使检查返回true,它也会移动到下一个语句。如何
//Loop through emails one by one
var emails_to_invite = ["test@test.com","invalid.com"];
var response_items = [];
async.each(emails_to_invite,
function(email, callback){
//Response item
var response_item = {}
response_item.email = email;
//Validate
if(Joi.validate({ email: email }, apiSchema).error) {
response_item.error = "not valid email";
response_items.push(response_item);
callback();
} else if(email == user.email) {
response_item.error = "Sending an invitation to your own email is kinda dumb";
response_items.push(response_item);
callback();
} else if(isUserAlreadyInvited(email,user_id)) {
response_item.error = "already invited";
response_items.push(response_item);
callback();
} else {
sendInvitationEmail(email,user_id,null,null,function(invitation_code){
if(invitation_code) {
response_item.invitationCode = invitation_code;
} else {
response_item.error = "server error";
}
response_items.push(response_item);
callback();
});
};
},
function(err){
//Return response
res.status(200).send(response_items);
}
);
function isUserAlreadyInvited(email,invited_by) {
User.findOne({
email: email,
invited_by: invited_by
}, function(err, user) {
if(err) {
return false;
} else {
return true;
}
});
}
这里有两个返回:
function isUserAlreadyInvited(email,invited_by) {
User.findOne({
email: email,
invited_by: invited_by
}, function(err, user) {
if(err) {
return false;
} else {
return true;
}
});
}
在该功能中定义
function(err, user) {
if(err) {
return false;
} else {
return true;
}
}
并且与返回值CCD_ 1无关。
显然,您的isUserAlreadyInvited()是一个异步函数,需要异步处理——它应该将回调函数作为参数。应调用该回调来代替function(err, user) {}
相关文章:
- 清除函数中if语句内部不起作用的间隔
- 在Javascript中的变量内部使用while()语句
- js事件,用于函数内部的when语句变为true
- 如何在js中等待if语句内部的结果
- Javascript在条件语句内部定位
- 重用if语句中的代码.(功能内部的功能是不良做法吗?)
- for循环内部If语句的JavaScript正确语法
- jQuery,在运行jQuery语句时出现“500内部服务器错误”
- 如何执行“;继续”;“内部的语句”;.每个“;jQuery的函数
- 为什么node.js可以在if语句内部调用clustert.fork()
- SyntaxError:缺少;在for循环内部时的before语句
- $(window).滚动在if语句内部执行,即使它没有't不符合条件
- 是否存在使用“;goto;javascript中的switch语句内部
- switch语句可以在Function内部
- If/Else语句没有't在函数内部运行
- jquery内部的Javascript抛出语句准备好了
- 这个评论是什么/*@cc_on@*/0在javascript中的if语句内部执行
- 在函数内部的if语句中调用变量
- 无法使用javascript从Java内部解析完整的javascript if语句
- Javascript if语句内部的另一个if语句