【发布时间】:2015-12-19 20:42:52
【问题描述】:
采用以下 TypeScript/Angular 2 代码示例:
query(): Rx.Observable<any> {
return Observable.create((o) => {
var refinedPosts = new Array<RefinedPost>();
var observable = this.server.get('http://localhost/rawData.json').toRx().concatMap(
result =>
result.json().posts
)
.map((post: any) => {
// Assume I want to convert the raw JSON data into a nice class object with
// methods, etc.
var refinedPost = new RefinedPost();
refinedPost.Message = post.Message.toLowerCase();
refinedPosts.push(refinedPost);
})
.subscribeOnCompleted(() => {
o.onNext(refinedPosts);
})
});
}
写出来,数据库正在返回 JSON。我想遍历原始 JSON 并创建一个自定义对象,最终向订阅者返回 Array<RefinedPost>。
代码有效,最终订阅者得到了他们需要的东西,但我不禁觉得我没有按照“反应式方式”做。我作弊并使用了外部累加器来收集 Array 中的元素,这似乎违背了使用流的目的。
那么,问题是,有没有更好、更简洁、反应式的方式来编写这段代码?
【问题讨论】:
标签: json angularjs typescript reactive-programming rxjs