angular - 无法使用“return of(false)”返回布尔值
问题描述
我的目标是加载一些数据,将其存储并返回true或false给请求方法。我的想法是执行操作,然后返回 (true)创建一个 observable。我有以下方法。
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的阴影变量的警告。有点担心我在这里做得不太好。
解决方案
是error
一个void
回调;你不能从那里回来,没有机会。从语义上讲,在你到达那里的那一刻,你就完蛋了;根据定义,rxjs
就像next*(complete|error)
事件流一样,所以一旦看到第一个(实际上是单个)错误,它就会崩溃。要处理可能的错误并保持您的实例有效,您必须通过操作员获取pipe
您的原始实例(文档和示例在此处)。Observer
catchError
setValidations(): Observable<boolean> {
...
return this.http.get<Validation[]>(url)
.pipe(
tap(suc => environment.validations = suc),
map(() => true),
catchError(() => of(false))
);
}
推荐阅读
- google-apps-script - 设置自动调整文本属性
- django - 卡在 DJango
- ruby - 发生 Ruby 异常:nil:NilClass 的未定义方法“split”
- python - 关闭客户端
- python - 有没有办法从 Django 中包含 HTML 标记的字符串将实际的 HTML 添加到模板中?
- reactjs - React Firebase 更新数据库
- javascript - 如何将模态重构为单独的文件?
- css - React-Bootstrap CSS 问题
- python - 如果熊猫交叉表中的所有行都为零,则无法包含列
- c# - 如何从 AppDomain 实例化 IModule 继承类?