为什么在没有`.subscribe`的情况下调用Angular http.post?

时间:2017-12-11 12:49:28

标签: javascript angular observable angular-routing canactivate

查看从authguard调用的canactivate

@Injectable()
export class AuthGuard implements CanActivate {
    constructor(private loginServicePOST:LoginService, private router:Router) { }

    canActivate(next:ActivatedRouteSnapshot, state:RouterStateSnapshot) {
        return this.loginServicePOST({...}).map(e => {
            if (e) {
                return true;
            }
        }).catch(() => {

            return Observable.of(false);
        });
    }   
}

此代码正常运行,并且会向服务器调用http请求。

问题:

这是一个可观察的,没有人.subscribe - 所以我不明白这个post请求是如何被调用的以及为什么。
subscribe必须写成恕我直言。

NB
 我已经知道canactivate可以返回bool / Promise<bool> / Observable<bool>

1 个答案:

答案 0 :(得分:1)

路由器正在订阅canActivate返回的observable,它调用loginService(...).map(...)返回的observable