Javascript 什么是';!!用户';用来做什么?这条线的结果是什么?
我想在我的应用程序中创建一个有角度的路线卫士。我找到了这段代码,但不明白为什么我们要将Javascript 什么是';!!用户';用来做什么?这条线的结果是什么?,javascript,angular,rxjs,Javascript,Angular,Rxjs,我想在我的应用程序中创建一个有角度的路线卫士。我找到了这段代码,但不明白为什么我们要将用户映射到!!用户。map(user=>!!user)line的目的是什么 canActivate( next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { return this.auth.user.pipe() take(1),
用户
映射到!!用户
。map(user=>!!user)
line的目的是什么
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> {
return this.auth.user.pipe()
take(1),
map(user => !!user),
tap(loggedIn => {
if (!loggedIn) {
console.log('access denied')
this.router.navigate(['/login']);
}
})
)
canActivate(
下一步:ActivatedRouteSnapshot,
状态:RouterStateSnapshot):可观察{
返回此.auth.user.pipe()
以(1)为例,
映射(用户=>!!用户),
点击(loggedIn=>{
如果(!loggedIn){
console.log('访问被拒绝')
this.router.navigate(['/login']);
}
})
)
!!
是将某个内容转换为布尔值的常用方法
通过在map()
函数中应用两次NOT运算符(!
),它将用户映射到一个布尔值,然后将该布尔值用作loggedIn
,该布尔值在tap()
函数中使用
用户很可能是一个包含userdata(具有真实值)的对象
我还假设,如果您未登录,用户将是
null
或undefined
(具有虚假值)。实际上,在这种情况下,您也可以使用类似的映射(布尔值)
以同样的方式工作,但更短