以链接模式获取一组URL

时间:2017-11-27 17:42:38

标签: angular rxjs reactive

我有以下情况。

我有一个' URL'我想要获取但不能同时获取的路径。

我想获取第一个URL并在完成时(无论结果如何),获取第二个等等。我想在一个Observable中将结果显示为一系列事件。

我可以这样做吗?如何? 我的挣扎: 1. mergeMap-ing将同时启动URL 2.即使做了上面的1,我也很难将这种结构放在一个' for'循环。

我尝试过以下操作,但只提取了最后一个网址。

const myEvents: number[] = [1, 2, 3, 4, 5];
let finalobs = this.http.get(`https://jsonplaceholder.typicode.com/posts/${1}`);
for (let i = 1; i < myEvents.length; i++) {
  finalobs = finalobs.pipe(
    mergeMap(evt => {
      console.log(`Getting: ${i}`);
      return this.http.get(`https://jsonplaceholder.typicode.com/posts/${myEvents[i]}`);
    })
  );
}
finalobs.subscribe(evt => console.log(evt));

任何想法?

提前谢谢

1 个答案:

答案 0 :(得分:1)

您正尝试在一组可观察对象上实现顺序订阅。 rxjs concat可以帮助您实现这一目标。请考虑以下示例

var observables = [];
Observable
    .concat(...observables)
    .subscribe((result) => { /* do something with the result */},
               (error) => { /* do something with the error response */ });