concatMap与主题不起作用,http.post工作

时间:2018-04-06 14:49:53

标签: angular rxjs

我有一系列项目要按顺序POST到服务器:

hh

为了达到这个目的,我将const items = ["a", "b", "c"]; 与Angular的concatMap一起使用。但是,我并不想直接在HttpService中使用HttpService来电,而是使用第三个concatMap

Subject

我的问题:只发送了第一个项目。我可以看到它完成(记录“完成发送”),但之后从未调用{b}为{b}。我确实得到了“完成所有项目”。

但是,如果我sendItem(item: Item): Subject<boolean> { const result$ = new Subject(); console.log(`Sending ${item}`); this.http.post('http://...', item) .subscribe(() => { // do stuff console.log(`Done sending ${item}`); result$.next() }); return result$; } sendItems() { Observable.from(items) .concatMap(item => this.sendItem(item)) .subscribe(() => console.log('Done with all items');); } 中直接sendItem

,则整个构造都有效
http.post

我做错了什么?

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案:

  

concatMap在前一个完成后才订阅下一个observable(https://www.learnrxjs.io/operators/transformation/concatmap.html

所以,如果我做result$.complete(),一切正常。