Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 流星:等待回电_Asynchronous_Meteor - Fatal编程技术网

Asynchronous 流星:等待回电

Asynchronous 流星:等待回电,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]"){

当我在Meteor应用程序上创建帐户时,我会多次检查每个元素的有效性。然后我创建用户。如果没有出现错误,我将显示success div,在另一个案例中显示错误div

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();