有没有办法在不返回未定义的情况下编写此函数

Is there a way to write this function without returning a undefined

我正在使用 angular fire 根据登录用户读取 firestore 上的数据。我检查用户对象是否已返回,并基于此我有一个命令来监听文档更改。

async getUsersCards() {
  let _user: UserModel = await this.authService.GetUser();

  if (_user) {
    return this.angularFirestore
      .collection<Card>('cards', (ref) =>
        ref.where('owner', '==', _user?.uid)
      )
      .valueChanges();
  } else {
  }
}

因为我有一个 If 检查用户,函数的签名是 Promise | undefined> 我如何消除对 undefined 的需求(我在 else 块中做什么)?

我认为您可以将代码简化为 return 和 Observable<Board[]> 而无需 return 和 Promise,如下所示:

// import { from, Observable } from 'rxjs';
// import { filter, mergeMap } from 'rxjs/operators';

getUsersCards(): Observable<Board[]> {
  // If `this.authService.GetUser()` returns an Observable, then you can use it directly without `from` function.
  // The `from` function is used to create an Observable from a Promise.
  return from(this.authService.GetUser()).pipe(
    filter((user) => !!user),
    mergeMap((user) =>
      this.angularFirestore
        .collection<Card>('cards', (ref) =>
          ref.where('owner', '==', user?.uid)
        )
        .valueChanges()
    )
  );
}

然后,在您的 component/service 中,您可以像下面这样使用它:

getUsersCards().subscribe((res: Board[]) => console.log(res));