Asynchronous 流星:等待回电
当我在Meteor应用程序上创建帐户时,我会多次检查每个元素的有效性。然后我创建用户。如果没有出现错误,我将显示success div,在另一个案例中显示错误divAsynchronous 流星:等待回电,asynchronous,meteor,Asynchronous,Meteor,当我在Meteor应用程序上创建帐户时,我会多次检查每个元素的有效性。然后我创建用户。如果没有出现错误,我将显示success div,在另一个案例中显示错误div Accounts.createUser(options ,function(err){ if(err){ console.log("rorororororroro"); if(err.message == "Email already exists. [403]"){
Accounts.createUser(options ,function(err){
if(err){
console.log("rorororororroro");
if(err.message == "Email already exists. [403]"){
Session.set('error', regAlert("This email adress already exists", tmpl));
}else{
Session.set('error', regAlert("Sorry, but an unidentified error occured. Please retry later. If the error persists, contact the support"));
}
}else if(Meteor.call('talknameIsAvailable', talkname)){
Session.set('error', regAlert("A user with this talkname already exists", tmpl));
}
});
if(!Session.get('error')){
$('#register-success').show("slow");
//console.log("[SUCCESS] Account created");
//document.location.href="/";
}else{
$('#register-error').show("slow");
}
问题是我总是显示success div,因为在回调设置错误会话变量之前,最后一个if/else是在电子邮件已经使用时计算的
Meteor处理这个案子的最好方法是什么
感谢您当Session.geterror未定义时!Session.geterror返回true 尝试: 我添加了。请在createUser函数的末尾等待:
Accounts.createUser(options ,function(err){
if(err){
console.log("rorororororroro");
if(err.message == "Email already exists. [403]"){
Session.set('error', regAlert("This email adress already exists", tmpl));
}else{
Session.set('error', regAlert("Sorry, but an unidentified error occured. Please retry later. If the error persists, contact the support"));
}
}else if(Meteor.call('talknameIsAvailable', talkname)){
Session.set('error', regAlert("A user with this talkname already exists", tmpl));
}
}).wait();
在函数开头定义的错误会话var il为false。在计算函数时,如果出现问题,它可能会将其设置为true
Accounts.createUser(options ,function(err){
if(err){
console.log("rorororororroro");
if(err.message == "Email already exists. [403]"){
Session.set('error', regAlert("This email adress already exists", tmpl));
}else{
Session.set('error', regAlert("Sorry, but an unidentified error occured. Please retry later. If the error persists, contact the support"));
}
}else if(Meteor.call('talknameIsAvailable', talkname)){
Session.set('error', regAlert("A user with this talkname already exists", tmpl));
}
}).wait();