无法使用“ return of(false)”返回布尔值

时间:2019-12-24 22:56:05

标签: angular typescript rxjs observable

我的目的是加载一些数据,进行存储,然后将 true false 返回给请求方法。我的想法是执行该操作,然后返回(true)创建一个可观察对象。我有以下方法。

setValidations(): Observable<boolean> {
  ...
  this.http.get<Validation[]>(url)
    .subscribe(
      suc => {
        environment.validations = suc;
        return of(true);
      },
      err => of(false)
    );
}

计算机抱怨我需要返回类型为 Observable 的东西,因此得出结论,我的语法失败。我该如何解决?

根据答案/评论进行编辑

setValidations(): Observable<boolean> {
  ...
  return this.http.get<Validation[]>(url)
    .pipe(
      map(_ => { console.log("success"); return of(true); }),
      catchError => { console.log("success"); return of(false); }
    );
}

我如上所述更改了方法。它似乎可以工作,但会发出有关称为 catchError 的阴影变量的警告。有点担心我在这里做的不好。

1 个答案:

答案 0 :(得分:0)

error是一个void回调;你不可能从那里回来,没有机会。从语义上讲,在您到达那里的那一刻,您就被搞砸了。根据定义,rxjs类似于next*(complete|error)事件流,因此,一旦看到第一个(实际上是单个)错误,它就会崩溃。为了处理可能的错误并保持原样,您必须通过pipe运算符(docs & examples are hereObserver原先的catchError

setValidations(): Observable<boolean> {
  ...
  return this.http.get<Validation[]>(url)
    .pipe(
      tap(suc => environment.validations = suc),
      map(() => true),
      catchError(() => of(false))
    );
}