2017-01-05 80 views
0

有人能告訴我爲什麼else這個函數不運行,但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

可能是其他條件永遠不會滿足。 –

+1

'console.log(errorCode)'顯示什麼? – Barmar

+0

@Barmar如果登錄信息不正確(即電子郵件或密碼不匹配),則會顯示正確的錯誤消息之一(auth.wrong-password,auth/invalid-email等) if條件。如果它是正確的,那麼什麼都不是 – SpiderMonkey

回答

3

.catch()方法只在承諾被拒絕時運行。如果您希望在承諾解決或被拒絕時運行代碼,則應使用.then()。它需要兩個函數參數,一個用於成功,另一個用於拒絕。

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 = ""; 
    });