以链接模式获取一组 url
Fetching an array of urls in chaining mode
我有以下情况。
我有一组 'URL' 个路径,我想获取但不是同时获取。
我想获取第一个 URL 并在完成时(无论结果如何)获取第二个等等。我想将结果作为单个 Observable 中的一系列事件呈现。
我可以这样做吗?如何?
我的奋斗:
1. mergeMap-ing 将同时启动 URLs
2. 即使执行上面的 1,我也很难将此结构放入 'for' 循环中。
我尝试了以下方法,但只提取了最后一个 URL。
const myEvents: number[] = [1, 2, 3, 4, 5];
let finalobs = this.http.get(`https://jsonplaceholder.typicode.com/posts/`);
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));
有什么想法吗?
提前致谢
您正在尝试实现对一组可观察对象的顺序订阅。 rxjs concat
可以帮助您实现这一目标。考虑以下示例,
var observables = [];
Observable
.concat(...observables)
.subscribe((result) => { /* do something with the result */},
(error) => { /* do something with the error response */ });
Rx.Observable.from([1, 2, 3, 4, 5])
.concatMap(event => this.http.get(`https://jsonplaceholder.typicode.com/posts/${event}`))
.subscribe(console.log);
我有以下情况。
我有一组 'URL' 个路径,我想获取但不是同时获取。
我想获取第一个 URL 并在完成时(无论结果如何)获取第二个等等。我想将结果作为单个 Observable 中的一系列事件呈现。
我可以这样做吗?如何? 我的奋斗: 1. mergeMap-ing 将同时启动 URLs 2. 即使执行上面的 1,我也很难将此结构放入 'for' 循环中。
我尝试了以下方法,但只提取了最后一个 URL。
const myEvents: number[] = [1, 2, 3, 4, 5];
let finalobs = this.http.get(`https://jsonplaceholder.typicode.com/posts/`);
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));
有什么想法吗?
提前致谢
您正在尝试实现对一组可观察对象的顺序订阅。 rxjs concat
可以帮助您实现这一目标。考虑以下示例,
var observables = [];
Observable
.concat(...observables)
.subscribe((result) => { /* do something with the result */},
(error) => { /* do something with the error response */ });
Rx.Observable.from([1, 2, 3, 4, 5])
.concatMap(event => this.http.get(`https://jsonplaceholder.typicode.com/posts/${event}`))
.subscribe(console.log);