Angular 为什么我可以在没有订阅的情况下使用Observable?

Angular 为什么我可以在没有订阅的情况下使用Observable?,angular,firebase,google-cloud-firestore,Angular,Firebase,Google Cloud Firestore,我的问题是杰夫·德莱尼的例子。 我试图理解为什么可以不用订阅就使用可观察的 例如,Github repo中的auth.service.ts: import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; import { auth } from 'firebase/app'; import { AngularFireAuth } from '@angular/fire/auth'; i

我的问题是杰夫·德莱尼的例子。 我试图理解为什么可以不用订阅就使用可观察的

例如,Github repo中的auth.service.ts:

import { Injectable } from '@angular/core';
import { Router } from '@angular/router';

import { auth } from 'firebase/app';
import { AngularFireAuth } from '@angular/fire/auth';
import {
  AngularFirestore,
  AngularFirestoreDocument
} from '@angular/fire/firestore';

import { Observable, of } from 'rxjs';
import { switchMap, first, map } from 'rxjs/operators';

@Injectable({ providedIn: 'root' })
export class AuthService {
  user$: Observable<any>;

  constructor(
    private afAuth: AngularFireAuth,
    private afs: AngularFirestore,
    private router: Router
  ) {
    this.user$ = this.afAuth.authState.pipe(
      switchMap(user => {
        if (user) {
          return this.afs.doc<any>(`users/${user.uid}`).valueChanges();
        } else {
          return of(null);
        }
      })
    );
  }
为什么可以在没有订阅的情况下使用可观察的

此文件中有一个异步文件,允许应用程序正常工作。由于警卫正在从AuthService请求getUser方法,该AuthService在返回时具有.toPromise:

getUser() {
    return this.user$.pipe(first()).toPromise();
}

也许它会传递给某个框架代码,该代码采用可观察的。也许模板中有一个异步管道。请给出一个你试图使之适应你的需要的例子。基本上我只是想知道在这个例子中它是如何可能的。这就是我发布Github回购协议的原因。有一些地方使用可观测数据而不订阅。我不明白为什么。期望人们阅读一堆根本不存在问题的代码是不合理的。还要注意,为什么是一个不同于如何的问题。你是对的。我的错。我应该更改问题还是什么?您可以将其归结为一个特定的查询。那么“chat.service.ts”中的函数“getUserChats”和“joinUsers”呢?它们也是因为各自HTML文件中的异步调用而产生的吗?是的,它们被用作HTML文件中的异步管道。我知道我理解。非常感谢。
getUser() {
    return this.user$.pipe(first()).toPromise();
}