soy*_*wod 36 observable rxjs firebase angularfire2 angular
我正在构建一个角度2应用程序(使用Firebase API).我正在使用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']);
});
}
Run Code Online (Sandbox Code Playgroud)
这是我第一次看到Observable do操作符,我无法理解它的真正含义?官方文件没有帮助我,我没有找到合适的例子.
有人可以带一些.do()使用示例吗?与.subscribe()?有区别?
Gün*_*uer 55
pipe( tap(...), )是为每个事件执行代码.不同之处do()在于,返回值.do()被忽略,并且不会改变订户接收的值.
现在它pipe( tap(...), )代替了do()
const source = of(1, 2, 3, 4);
source.pipe(
tap(val => console.log('I am tap: ',val)),
filter(val => val > 2),
map(val => val + 1)).subscribe((val) => {
console.log('I am subscriber value after filtering: ', val);
});
Run Code Online (Sandbox Code Playgroud)
输出:
I am tap: 1
I am tap: 2
I am tap: 3
I am subscriber value after filtering: 4
I am tap: 4
I am subscriber value after filtering: 5
Run Code Online (Sandbox Code Playgroud)
*Tap 操作符不做任何修改,可以说只是为了查看流。
| 归档时间: |
|
| 查看次数: |
23435 次 |
| 最近记录: |