Я начал использовать Angular2 Observable
, но я не могу найти что-то похожее на .then
, которое я использовал с Promises
.
Это то, что я хочу выполнить.
код от header.component.ts
public login() {
this._user = AuthService.getInstance().login(this._loginInfo);
}
код от auth.service.ts
return this._httpClient.post('LoginAction', credentials)
.map(res => res.json())
.subscribe(user => {
return new User(user);
});
Функция promises, login
возвращает Promise, которая в конечном итоге преобразуется в реальный ответ от сервера. Но с Observable это не сработает.
Есть ли способ сделать подобное? Я хочу избежать необходимости добавлять подписку внутри функции component
login
. Я хочу иметь возможность выполнять всю работу в сервисе и возвращать фактический объект в component
.
Кроме того, я попытался создать Promise
, с toPromise
, но я продолжаю получать toPromise is not a function
.
p.s. _httpClient - моя оболочка вокруг Angular2 http, в которой я готовлю запрос, добавляя некоторые заголовки и т.д.
изменить
return this._httpClient.post('LoginAction', credentials)
.map(res => res.json())
.toPromise(). <-- i keep getting that it is not a function
then(user => {
return new User(user);
});
выполнив это, мой компонент получит объект (который ему нужен), и в сервисе я мог бы делать дополнительные вещи (например, сохранять пользователя в localstorage, как только я его запустил).
И я переключился на Promise
, потому что делать то же самое с Observable
не работает (или я делаю это неправильно)?
Я вижу, что возвращаемый объект Observable (перед вызовом toPromise), но я действительно не вижу функцию toPromise
.