我的目的是加载一些数据,进行存储,然后将 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 的阴影变量的警告。有点担心我在这里做的不好。
答案 0 :(得分:0)
error
是一个void
回调;你不可能从那里回来,没有机会。从语义上讲,在您到达那里的那一刻,您就被搞砸了。根据定义,rxjs
类似于next*(complete|error)
事件流,因此,一旦看到第一个(实际上是单个)错误,它就会崩溃。为了处理可能的错误并保持原样,您必须通过pipe
运算符(docs & examples are here)Observer
原先的catchError
。
setValidations(): Observable<boolean> {
...
return this.http.get<Validation[]>(url)
.pipe(
tap(suc => environment.validations = suc),
map(() => true),
catchError(() => of(false))
);
}