Ответ 1
.do()
- выполнение кода для каждого события. Разница в .map()
заключается в том, что возвращаемое значение .do()
игнорируется и не изменяет того, какое значение получает абонент.
Я создаю приложение angular 2 (с API Firebase). Я использую модуль AngularFire. Мне было интересно, как я могу смешивать метод canActivate
с AngularFire auth Observable, и я нашел этот пост. Ответ заключается в том, чтобы метод canActivate
возвращал значение Observable<boolean>
:
canActivate(): Observable<boolean> {
return this.auth
.take(1)
.map((authState: FirebaseAuthState) => !!authState)
.do(authenticated => {
if (!authenticated) this.router.navigate(['/login']);
});
}
Это первый раз, когда я вижу оператор Observable do
, и я не могу понять, что он на самом деле делает? Официальный док не помог мне, и я не нашел достойных примеров.
Может ли кто-нибудь принести сюда несколько примеров использования .do()
? И разница с .subscribe()
?
.do()
- выполнение кода для каждого события. Разница в .map()
заключается в том, что возвращаемое значение .do()
игнорируется и не изменяет того, какое значение получает абонент.