Я никогда не думал о себе как о глупом, но мне, возможно, придется пересмотреть эту позицию. Мне здесь не хватает чего-то очень простого, но я просто не могу этого понять.
В моем login
компоненте у меня есть код вроде:
if (this.authenticationService.login(user,password)) {
// Navigate somewhere else now the user is logged in
} else {
// Display an error message and leave the login screen in place
}
Естественно, это ожидание логического ответа, указывающего на успех или неудачу входа в систему.
В AuthenticationService есть функция входа в систему. Затем он добавляет заголовки и строит тело перед вызовом http.put<any>
Итак, мой AuthenticationService.login: boolean
делает фактический вызов http.put
. Очевидно, что это не будет выполнено до вызова subscribe()
.
Мой вопрос заключается в том, что, на мой взгляд, у меня есть два варианта. Один из них заключается в том, чтобы как-то задерживать return success;
до тех пор, пока .subscribe()
не обработает, или немедленно возвращать Observable<boolean>
(изменяя прототип функции, чтобы указать на это), а затем отправлять observer.next(true)
, когда .subscribe()
завершен.
Проблема в том, что, несмотря на чтение документации со всего мира, большая часть которой противоречива, я не могу понять, как достичь какой-либо из этих целей. Обратите внимание, что я использую Angular 6 и RxJS 6.