Я создаю приложение с использованием Nativescript- Vue, которое требует аутентификации пользователей для использования приложения. У меня есть RESTful бэкэнд, который функционирует надлежащим образом, как проверено с почтальоном
Токены JWT реализованы с постоянным сроком службы, но требуют обновления каждые 5 минут (функциональность refre sh - в вакууме - работает должным образом).
Использование Ax ios. js для веб-вызовов.
Я застрял на том, как реализовать basi c logi c для определения, вошел ли пользователь в систему. Все вызовы Ax ios возвращают Promise. Я много раз читал расширенные ответы «Обещание», но мне не пришло в голову, как мне делать то, что я хочу. Короче говоря, мне нужно приостановить выполнение кода, пока API не сможет аутентифицировать пользователя, а это не для меня.
Код выглядит следующим образом:
app. js
// Import VUE library
import Vue from "nativescript-vue";
// This is my user handler
import {UserServices} from "./assets/js/UserServices.js"
// imported Components
import Login from "./components/Login";
import Home from "./components/Home.vue"
let user = new UserServices();
let loggedIn = user.checkAuthStatus();
new Vue({
render: h => h('Frame', [
h(
loggedIn ? Home : Login
)
])
}).$start();
Это не работает, потому что user.checkAuthStatus () - это асинхронная c функция, которая возвращает обещание, и, следовательно, я не могу получить возвращенное логическое значение. Я знаю, что это проблема, но я оставил это в коде, чтобы понять ожидаемый результат. Что я не понимаю, так это как переписать код так, чтобы спроектированный поток был осуществим с помощью Promises.
Core logi c разработан так:
Проверьте состояние входа пользователя в систему через user.checkAuthStatus (). Эта подпрограмма проверяет действительный токен (действительное значение, которое существует и не имеет срока действия). Если срок его действия истек, токен обновляется с помощью вызова this.refre sh () из контроллера UserServices.
Если значение «true» возвращается от пользователя. checkAuthStatus () приложение Vue должно загружать домашний компонент (он же пользователь вошел в систему), иначе пользователь должен будет войти в систему.
Я могу только представить, что это Простую ситуацию успешно преодолели тысячи людей, но мой мозг не работает через нее. Я понимаю, почему JS необходимо продолжать работать, чтобы не останавливать выполнение кода (и я думаю, в этом суть Promise), но иногда код просто должен остановиться и ждать, как кажется, как в сценарий аутентификации пользователя.
Любая помощь, детальная информация о том, как решить мою проблему? Пожалуйста и спасибо.