Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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
按顺序运行的Javascript代码_Javascript_Ajax_Firebase_Firebase Authentication - Fatal编程技术网

按顺序运行的Javascript代码

按顺序运行的Javascript代码,javascript,ajax,firebase,firebase-authentication,Javascript,Ajax,Firebase,Firebase Authentication,我的JS代码运行不正常,有问题。当出现错误时,它会在执行catch之前跳过if(!haderro),以便haderro始终等于true。我知道它与javascript以及它如何同时运行有关,但我不知道如何修复它。 代码如下: var email = $('#email').val(); var password = $('#password').val(); var hadError = false; // var unlocked = false; if(email != "" &&

我的JS代码运行不正常,有问题。当出现错误时,它会在执行catch之前跳过
if(!haderro)
,以便haderro始终等于true。我知道它与javascript以及它如何同时运行有关,但我不知道如何修复它。 代码如下:

var email = $('#email').val();
var password = $('#password').val();
var hadError = false;
// var unlocked = false;

if(email != "" && password != ""){
  auth.signInWithEmailAndPassword(email, password).catch(function(error) {
    // console.log(hadError);
    hadError = true;
    console.log(hadError);
    var errorCode = error.code;
    var errorMessage = error.message;
    $('#login-error').text(errorMessage);
    // unlocked = true;
  });
  if(!hadError){
    success();
  }
}

Firebase方法是异步的,返回
Promise
。您可以在方法调用后执行.then()以在承诺返回后执行代码,例如

auth.signInWithEmailAndPassword(email, password).then((user) => { 
    //if you want, do something with the `user` which is a firebase.User
    if(!hadError) success();
}).catch(function(error) {
    hadError = true;
    console.log(hadError);
    var errorCode = error.code;
    var errorMessage = error.message;
    $('#login-error').text(errorMessage);
});
根据方法的不同,您甚至可能不需要检查
haderro

供进一步参考:

在某些情况下,您可以将第二个方法传递给
,然后在
Promise
被拒绝时调用该方法,但对于Firebase,API引用的方法是
catch
,用于错误处理