Я пишу приложение Windows Phone 8, которое использует REST API для сбора данных. API требует аутентификации, поэтому всякий раз, когда я пытаюсь вызвать REST API, я должен проверить, аутентифицирован ли пользователь. Если пользователь не аутентифицирован, я хочу открыть окно входа в систему и дать пользователю возможность пройти аутентификацию. Это не проверка подлинности HTTP, но она использует настраиваемый экран входа в систему.Использование async-жду ожидания загрузки другого представления
Моя проблема: я хотел бы использовать await
, чтобы дождаться аутентификации, но я не знаю, как это сделать, поскольку мне нужно открыть еще один вид. Вот псевдо-код для того, что я хотел бы сделать:
Метод LoadData:
async Task LoadDataAsync() {
bool authenticated = await AuthenticateAsync();
if (authenticated) {
// do REST API stuff
}
}
И метод AuthenticateAsync:
async Task<bool> AuthenticateAsync() {
if (alreadyAuthenticated)
return true;
// not authenticated, so bring up a login view to let the user log in
// How do I do this in the context of async-await?
}
Таким образом, в методе AuthenticateAsync я хотел бы довести до когда пользователь должен аутентифицироваться. Но я не могу позвонить NavigationService.Navigate()
, потому что это не дружит с асинхронным ожиданием, и я ничего не смогу ждать.
Каков правильный способ сделать это?
Почему не поддерживается 'NavigationService.Navigate' async-wait? Вам просто нужно будет отобразить представление «загрузка» по умолчанию перед ожиданием, а затем отобразить либо вход в систему, либо основной вид. – McGarnagle
Я не понимаю. Итак, вы говорите, что я могу «ждать NavigationSerivce.Navigate (...);», а затем получить результат аутентификации каким-то образом позже? Я не знаю, как это сделать. –