是否使用AJAX检查登录状态?

时间:2018-08-29 14:09:42

标签: javascript asynchronous promise

我目前正在重构一些不包含太多AJAX的旧代码。 很多东西已经完成了,但是我目前对这件事一无所知。 它是以下功能:

function CheckForLogin(){
  var loginStatus = <?php if(ISSET($_SESSION["loggedUser"])){
    echo 1;
  }else{
    echo 0;
  }?>;

  if(loginStatus == 1){
    //console.log("CheckForLogin returned ", true)
    return true;
  }else{
    //console.log("CheckForLogin returned ", false)
    return false;
  }
}

它在很多地方都使用过,它根据用户的登录状态控制程序的流程,例如:

if(checkForLogin()){
//doStuff
}else{
//do some other stuff
}

现在,如果我使此代码异步,那么如何使if可见AJAX调用的结果?因为据我所知,一旦我进入异步世界,从那里返回的结果就无法真正返回到同步世界(除非我使用全局变量,或者只是将结果写入某些元素,数据库等)。

换句话说,一旦我将服务器交互设为AJAX,恐怕我只能从“ checkForLogin()”返回的内容是一个Promise对象。

所以,我的第一个问题是: 您认为仅保留JS和php的“混合”是一种可行的解决方案吗?还是您认为,使这种与JS异步且独立的php的好处会胜过弊端?

第二个问题是: 如果您建议使此检查非常频繁地进行,请问如何在不使代码陷入困境的情况下做到这一点?^^ 在函数的正常流程中使用promise实际上非常不错,特别是与使用回调相比。但是在if语句中使用它们吗? 还是有某种方法可以直接根据AJAX的结果返回true / false?

0 个答案:

没有答案