吞下我可观察到的错误并返回缓存值——所有这些都可以保持订阅的活力
Swallowing an error in my observable and returning a cached value - all keep the subscription alive
请保存我的理智。我正试着在我的可观察范围内做一些错误处理。我关注了很多文章,但都没有点击。我宁愿处理服务内部的错误,并在发生错误时推出缓存的数据。
我在我的angular2组件内这样做。。。
private initializeJobPolling() {
this.subscription = Observable
.interval(5000)
.startWith(0)
.flatMap(() => {
return this.jobService.getJobs();
})
.subscribe(
(jobsContainer: any) => {
let allJobs: IJob[] = jobsContainer.jobs.map(j => new Job(j));
this.allJobs = allJobs;
} );
}
以及内部jobService。。。
getJobs() {
let thisService = this;
return thisService.http.get('app/services/jobs.json')
.map((responseData) => {
console.log('getting Jobs from API');
thisService.allJobs = responseData.json();
return thisService.allJobs;
});
}
使用catch:
getJobs() {
return this.http.get('app/services/jobs.json')
.map((responseData) => {
console.log('getting Jobs from API');
this.allJobs = responseData.json();
return this.allJobs;
})
.catch(err => {
console.error(err);
return Observable.just(this.allJobs);
});
}
更新:
正如评论中所指出的,RxJS 5没有.just
,所以使用.of
:
getJobs() {
return this.http.get('app/services/jobs.json')
.map((responseData) => {
console.log('getting Jobs from API');
this.allJobs = responseData.json();
return this.allJobs;
})
.catch(err => {
console.error(err);
return Observable.of(this.allJobs);
});
}
相关文章:
- 如何在Javascript中创建一个所有用户都可以访问的变量
- 从表单字段复制数据并将其放在echo语句中,所有这些都在$xml=simplexmlload_file函数中
- 在哪里放置JavaScript警报覆盖,以便所有页面都可以使用它,而无需导入*.js
- 验证表单,检查用户是否存在,注册它们.所有这些都与阿贾克斯有关
- 从单击表单的 html 表行中预填充表单字段.(所有这些都应该发生在JSP上)
- Javascript 模块模式 - 所有模块都可以相互访问吗?
- 如何使用单选按钮禁用下拉列表中的选项,所有这些都在同一个下拉列表中.使用Javascript
- 使所有控制器都可以使用角度功能
- 所有视图都可以使用的Backbone JS中心模型
- 如何使JavaScript中的所有函数都可以访问变量
- 所有元素都可以具有onload属性
- 我想保存到mysql数据库,发送一封电子邮件,然后做一个帖子,所有这些都使用一个按钮
- 如何使用默认值填充文本字段或将其保留为空,所有这些都取决于下拉列表中的选择
- 在JavaScript中存储所有用户都可以访问和编辑的数据
- 是否有一种简单的方法返回成功调用$q.所有这些都无需创建$q.defer()变量
- 用一个所有对象都可以使用的函数扩充Object对象
- 使用$ q.所有这些都是为了让同步HTTP调用无法正常工作
- 吞下我可观察到的错误并返回缓存值——所有这些都可以保持订阅的活力
- 所有事件都可以通过多种方式收听吗
- 在HTML5中所有元素都可以拖动吗,我希望<音频>都是可拖动的,这可能吗?