Я изучаю RxJS, и из синхронного мира это сложно. В любом случае, я пытаюсь делать простые вещи, объединяя их.
login
является первым Observable<any>
: если он завершится, я хочу отобразить результат (просто свойство токена):
const login = this.userService.login({ username: username, password: password });
Получение токена кажется простым: login.pipe(map(res => res.token));
storage
является вторым Obsevable<boolean>
: он должен принимать token
и возвращать его значение (Наблюдаемое, снова)
const store = this.localStorage.setItem('token', token);
Как мне "передать" результат login
(сопоставленный) в store
(и заставить store
ждать его)?
Попытка 1 , не знаю, ждет ли секунда, пока не завершится первая:
return this.userService.login({username: username, password: password})
.pipe(
map(res => res.token),
mergeMap(token => this.localStorage.setItem(AUTH_TOKEN_KEY, token)),
tap(res => console.log(res)) // boolean true
);