2014-10-05 2 views
2

Проблема, с которой я столкнулась, заключается в том, что при загрузке страницы требуется секунда, чтобы проверить, что пользователь вошел в систему. Я использую эту функцию auth для создания переменной currentUser, которую я успешно выполнил используется в других функциях, вызванных событиями щелчка. Но когда дело доходит до загрузки вещей, специфичных для этого пользователя при загрузке страницы, в нем говорится, что переменная не определена (поскольку для ее завершения требуется аутентификация).проблемы с ожиданием auth для загрузки с использованием firebase

Как вы можете получить текущий пользователь перед завершением авторизации или выполнить функции, которые запускаются при загрузке, дождаться завершения команды auth?

ответ

4

Firebase выпустили новые клиентские библиотеки в прошлую пятницу (3 октября 2014 года), которые включают в себя синхронные аксессоры для данных аутентификации, которые звучат точно так, как вам нужно:

var ref = new Firebase('https://<your-firebase>.firebaseio.com'); 
var authData = ref.getAuth(); 

Попробуйте обновить свою клиентскую библиотеку до версии 1.1 или более поздней версии для Интернета и просмотреть последнюю документацию по адресу https://www.firebase.com/docs/web/guide/user-auth.html#section-monitoring-authentication.

2

Вы можете использовать setInterval, следующий код будет проверять currentUser каждые полсекунды и запустить fireBusinessLogicHereFunction() когда currentUser будут доступны:

var checkAuthInterval = setInterval(function(){ 
    if (typeof currentUser !== undefined) { 
     clearInterval(checkAuthInterval); 
     fireBusinessLogicHereFunction(); 
    } 
}, 500); 

Позже можно будет использовать promises - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

Смежные вопросы