В настоящее время я выполняю рефакторинг некоторого устаревшего кода, который не содержал много 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
}
Теперь, если я сделаю этот код асинхронным, как я могу сделать результат вызова AJAX видимым для if? Потому что, как только я войду в асинхронный мир, его результаты не смогут быть возвращены обратно в синхронный мир (если я не использую глобальные переменные или просто записываю результаты в некоторый элемент, базу данных и т. Д.), Насколько я понял.
Другими словами, я боюсь, что все, что я могу вернуть из "checkForLogin ()", это объект обещания, как только я сделал взаимодействие с сервером AJAX.
Итак, мой первый вопрос:
Считаете ли вы, что это жизнеспособное решение - просто оставить «смешение» JS и php таким, какое оно есть сейчас? Или вы думаете, что преимущества создания этого асинхронного и отдельного php от JS перевесят недостатки?
И мой второй вопрос:
Если бы вы посоветовали сделать эту очень частую проверку асинхронной, как я могу это сделать, не превращая код в адскую дыру? ^^
Использование обещаний внутри нормального потока функций на самом деле довольно приятно, особенно по сравнению с использованием обратных вызовов. Но используя их внутри if-операторов?
Или есть какой-нибудь способ вернуть true / false напрямую в зависимости от результата AJAX?