Сообщение от Sufir
|
не могу справиться с параллельностью
|
во-первых, это не паралельность, а ассинхронность - в JS нету параллельности.
ассинхронность - это когда ты можешь вызвать функцию, но ее результат будет доступен не сразу, а через время
При этом в каждый момент времени выполняется только один участок кода, а не несколько паралельно.
в твоем примере, ты вызываешь $.getJSON, но ее результат будет доступен только когда с сервера придет ответ, и будет он доступен в функции-колбеке(где ты его и принимаешь в своем коде)
При этом, return auth; вызывается сразу же, после того как была выполнена функция $.getJSON, но до того как пришел результат(и возможно даже до того, как был послан запрос)
Сообщение от Sufir
|
Или, может быть я совсем не правильно делаю и мыслю из-за того, что привык php?
|
Именно так.
Твою поблему можно разрулить дввумя способами:
1)нежелательный
указать $.getJSON, чтобы он выполнялся синхронно(в дкоументации JQUery описано как сделать)
При этом, пока с сервера не придет ответ, код дальше не будет выполнятся. А когда придет, то выполнится return auth;, и ты получишь нужный тебе результат.
НО!
При этом не будет выполнятся совсем никакой код. Браузер тупо "зависнет", не позволяя пользователю кликнуть что-либо, либо как-то взаимодействовать со страницей.
Даже зависание на полсекунды будет неприятно, что уж говорить, если запрос будет выполнятся несколько секунд.
Поэтому так никто не делает.
2) привыкать к новой парадигме - асинхронности.
Те действия, которые ты хочешь произвести с данными, прищедшими с сервера - ты должен делать в том колбеке, где они доступны.
Где у тебя написано auth = true; , вот там и вызывай alert, и что еще тебе нужно