【发布时间】:2018-01-22 15:33:32
【问题描述】:
我有一个属性列表,需要作为更大的 mergeMap 操作的一部分提交。
this.customFeedsService.postNewSocialMediaFeed(this.newFeed)
.mergeMap( newFeed => this.customFeedsService.postFeedProperties( newFeed.Id, this.feedProps))
.mergeMap(newProps => this.customFeedsService.preloadSocialMediaFeed(newProps.FeedId))
.subscribe(data => console.log(data), err => console.log);
在我的服务中,我循环遍历属性以创建返回到 mergeMap 操作的单个 Observable。
public postFeedProperties( feedId: number, props: FeedPropertyApi[] ): Observable<any> {
let observeGroup = new Observable<any>();
for(let prop of props){
prop.FeedId = feedId;
observeGroup.concat(this.apiService.postData(this.feedPropertyApiUrl, prop, true)
.map(res => res.json()));
}
return observeGroup
// return this.apiService.postData(this.feedPropertyApiUrl, props[0], true)
// .map(res => res.json()).concat(this.apiService.postData(this.feedPropertyApiUrl, props[1],true)
// .map(res => res.json())).concat(this.apiService.postData(this.feedPropertyApiUrl, props[2], true)
// .map(res => res.json()));
}
现在,当我运行注释部分时,一切都按预期工作。但是,当我运行循环时,我得到一个Cannot read property 'subscribe' of undefined 错误。我在循环中做错了什么?
【问题讨论】:
-
用你所有的 Observables 创建一个 Observable 数组。使用 Observable.forkJoin(yourArrayObservables).subscribe 见stackoverflow.com/questions/42334469/…
-
这很棒!谢谢!
标签: angular loops typescript rxjs observable