如何在Jquery中等待函数(没有回调)在执行下一个语句之前运行

How to wait for function (with no callback) to run in Jquery before exceuting next statement?

本文关键字:下一个 执行 语句 运行 回调 Jquery 等待 函数      更新时间:2023-09-26

我使用Parse服务来编写一个用户身份验证系统。Parse提供了注销当前用户的Logout函数,但该函数不提供回调选项。

我的困境是,我需要在异步注销功能完成后运行一个函数。如何在不修改Parse框架的情况下实现这一点呢?

下面是我的代码:
function logOut() {
    if (getCurrentUsername()) {
    Parse.User.logOut();
    // Need this to wait till the logOut function completes
    loggedIn();
    } else {
    }
}
function loggedIn() {
 if (getCurrentUsername()) {
    //Hide the sign in form because it is not needed
    $('#sign_in_form').hide();
    //Get the username of the current user by calling the function getCurrentUsername()
    var currentUsername = getCurrentUsername();
    //Write a welcome message to the current user and give a log out option
    $('#signed_in_note').html('Welcome <a href="#">'+ currentUsername +'</a> | <a href="#" id="log_out">log out</a>')
    //Show the welcome message
    $('#signed_in_note').show();
 } else {
 //If no user is signed in, we show the login form and hide the welcome message
  $('#sign_in_form').show();
  $('#signed_in_note').hide();
 }
}

您可以设置一个简单的计时器来检查用户是否仍在进行身份验证:

var currentUser;
var timerId;
function logOut() {
    currentUser = getCurrentUsername();
    if (currentUser) {
      Parse.User.logOut();
      timerId = setInterval(checkAuth, 200);
    } else {
      //show msg saying already logged out or log an error
    }
}
function checkAuth() {
    // check if user is logged out
    if(!currentUser.authenticated()) {
      abortTimer();
      loggedIn();    //now this will run only after user is logged out
    }
}
function abortTimer() { 
  clearInterval(timerId);
}

p。S:不要指望这在100%的情况下工作,因为用户可能会在注销调用返回之前关闭浏览器。