Javascript Modal在Firebase登录完成之前关闭并重新加载页面

Javascript Modal在Firebase登录完成之前关闭并重新加载页面,javascript,html,firebase,firebase-authentication,Javascript,Html,Firebase,Firebase Authentication,我正在尝试使用Firebase建立登录。发生的情况是,当我提交带有用户名和密码的模式表单时,我的异步登录函数没有足够的时间来完成,并且在函数完成之前网站会被重新加载。当我将onsubmit更改为“return false”时,所有操作都正常,用户已登录,但表单不再以编程方式关闭。我想要的是它等待Firebase登录函数,然后关闭页面并重新加载 这是我的密码: <button onclick="document.getElementById('login').style.display='b

我正在尝试使用Firebase建立登录。发生的情况是,当我提交带有用户名和密码的模式表单时,我的异步登录函数没有足够的时间来完成,并且在函数完成之前网站会被重新加载。当我将onsubmit更改为“return false”时,所有操作都正常,用户已登录,但表单不再以编程方式关闭。我想要的是它等待Firebase登录函数,然后关闭页面并重新加载

这是我的密码:

<button onclick="document.getElementById('login').style.display='block'" type="button" class="btn btn-outline-success" id="admin-button">Admin</button>
  <div id="login" class = "modal">
    <form name="myForm" class="modal-content animate" method="post">
      <div class="imgcontainer">
        <span onclick="document.getElementById('login').style.display='none'"class="close" title="Close Modal" style="color:#a00000;">&times;</span>
      </div>
      <div class="container">
        <h2 id="admin-title">Admin Login</h2>
        <label for="uname"><b>Username</b></label>
        <input type="text" placeholder="Username" name="uname" required>
        <label for="psw"><b>Password</b></label>
        <input type="password" placeholder="admin-code" name="password" required>
        <button type="submit" id="login-button" onclick="validateForm()">Login</button>
      </div>
      <br/>
      <div class="container" style="background-color:#f1f1f1">
        <button type="button" onclick="document.getElementById('login').style.display='none'" class="cancelbtn" style="margin:10px">Cancel</button>
      </div>
    </form>
  </div>

非常感谢你

我将假定
CheckIfSignedIn
函数关闭模式,因为从提供的代码中不清楚在何处执行此操作

如果
signInWithFirebase
正在对您的Firebase进行异步调用,则
validateForm
需要
等待它。下面是一些伪代码,展示了如何执行此操作

async function validateForm(){
  ...
  await signInWithFirebase(x,y);

  CheckIfSignedIn();
}
我对Firebase本身并不熟悉,但所有异步代码的原理都是一样的

async function validateForm(){
  ...
  await signInWithFirebase(x,y);

  CheckIfSignedIn();
}
async function signInWithFirebase(x, y){
    try {
        const user = await firedb.auth().signInWithUsernameAndPassword(x, y);
        return user;
    } catch(error) {
        return error.message;
    }
}