2017-01-05 19 views
0

この関数のelseはなぜ実行されないのですか?誰か教えてください。if?また、コードをゆっくり実行している何かがありますか?以下は私のコードです。IF関数が実行されている、ELSEでない

function SignUserIn() { 
// Get elements 
const Email = document.getElementById("txtEmail"); 
const Password = document.getElementById("txtPassword"); 

// Get email and pass 
const email = Email.value; 
const password = Password.value; 
const auth = firebase.auth(); 

//Sign In 
firebase.auth().signInWithEmailAndPassword(email, password) 
    .catch(function(error) { 
     // Handle Errors here. 
     var errorCode = error.code; 
     var errorMessage = error.message; 
     if (errorCode === 'auth/wrong-password' || errorCode === 'auth/invalid-email' || errorCode === 'auth/user-disabled' || errorCode === 'auth/user-not-found') { 
      window.alert(errorMessage); 
      document.getElementById("txtPassword").value = ""; 
     } 
     else { 
      //Realtime listener 
      firebase.auth().onAuthStateChanged(frebaseUser => { 
       sessionStorage.setItem("email", email); 
       window.alert("You Are Successfully Signed In! Welcome " + email); 
       window.location = "homepage.html"; 
      }); 
     } 

    }); 
} 
+0

else条件が満たされない可能性があります。 –

+1

'console.log(errorCode)'とは何ですか? – Barmar

+0

@Barmarログイン情報が間違っている(電子メールまたはパスワードが一致しない)場合は、正しいエラーメッセージ(auth.wrong-password、auth/invalid-emailなど)のいずれかが表示されますif条件。それが正しければ何もしません。 – SpiderMonkey

答えて

3

.catch()メソッドは、約束が拒否された場合にのみ実行されます。約束が解決または拒否されたときにコードを実行する場合は、.then()を使用してください。成功のために1つ、拒否のために2つの関数の引数をとります。

firebase.auth().signInWithEmailAndPassword(email, password) 
    .then(function() { 
     // Handle success here 
     firebase.auth().onAuthStateChanged(frebaseUser => { 
      sessionStorage.setItem("email", email); 
      window.alert("You Are Successfully Signed In! Welcome " + email); 
      window.location = "homepage.html"; 
     }); 
    }, function(error) { 
     // Handle Errors here. 
     var errorMessage = error.message; 
     window.alert(errorMessage); 
     document.getElementById("txtPassword").value = ""; 
    }); 
関連する問題