我目前正在重构一些不包含太多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?