Использовать AJAX для проверки статуса входа или нет? - PullRequest
0 голосов
/ 29 августа 2018

В настоящее время я выполняю рефакторинг некоторого устаревшего кода, который не содержал много 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...