【发布时间】:2018-09-08 07:57:27
【问题描述】:
我有一个 Observable,其中包含用户选择的项目。每个选定的项目都用作 api 调用的源。 api 调用的结果应该“合并”到 Observable。
我似乎没有得到的东西是我如何将结果合并回来。我尝试使用扫描运算符,但“累加器”只会“增长”。
我有这个:
import {
Observable,
Subject,
of ,
from
} from 'rxjs';
import {
map,
merge,
flatMap
} from 'rxjs/operators';
function apiUri(albumId: String) {
return `https://jsonplaceholder.typicode.com/albums/${albumId}`
}
const albums$ = new Subject < String[] > ();
const responseStream = albums$.pipe(
flatMap(albumIds => albumIds),
flatMap(id => from(fetch(apiUri(id)))),
flatMap(resp => resp.json()),
/* I'm in the dark on how to "merge" it back into an Observable<String[]> */
);
responseStream.subscribe(resp => console.log(resp))
const randomCodes1 = ['5', '1', '3'];
albums$.next(randomCodes1);
带有运行示例的 Stackblitz 链接:https://stackblitz.com/edit/rxjs-flatmap-galore?&file=index.ts
【问题讨论】: