В моем приложении Angular2 я использую canActivate, чтобы разрешить доступ к страницам. Часть этого заключается в том, чтобы проверить с сервером, что токен не был подделан, поэтому, прежде чем я смогу решить, что пользователю может быть предоставлен доступ, мне нужно вызвать api. Это означает подписку на Наблюдение и ожидание ответа.Ожидание по наблюдаемой подписке Angelar2
Мне нужно вернуть true или false, но поскольку я делаю вызов asyns, я не могу вернуться на основе моего ответа. Я понимаю, что не могу ждать, так как это однопоточный, но мне нужно как-то блокировать, пока у меня не будет ответа от api. мой canActivate выглядит следующим образом:
canActivate() {
this.guardClient.checkToken("token")
.subscribe(response => {
let responseText = response.text().replace(/"/g, '');
if (responseText === 'Ok')
{
return true;
}
if(responseText === 'denied') {
this.router.navigate(['login']); // redirecting to login
return false;
}
});
}
Может кто-нибудь сказать мне, как решить эту проблему ??
Спасибо, что сделал! :) – methgaard