RxJS/Observable flatMap可以返回Observable或数组

Dol*_*lan 7 observable rxjs flatmap angular

有人可以向我解释为什么.flatMap操作员可以接受返回的函数Observable,或者array

官方的文档说:

FlatMap运算符通过将您指定的函数应用于源Observable发出的每个项来转换Observable,其中该函数返回一个本身发出项的Observable.

为什么它也会返回一个数组

例如,这些都是有效的:

obs$.flatMap((data) => {
    return [];
});

obs$.flatMap((data) => {
    return new Observable<string>();
});
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

obs$.flatMap((data) => {
    return 1;
});
Run Code Online (Sandbox Code Playgroud)

Est*_*ask 5

官方文档无关紧要,因为它们是指RxJS 4而非RxJS 5。

mergeMap投影函数返回不只是ObservableObservableInput接口,它适用于可转换的可观测量杂值

数组可以解释为可观察到的对象,它从左到右依次发出数组中的所有值,然后立即完成。

这意味着

obs$.flatMap((data) => arr)
Run Code Online (Sandbox Code Playgroud)

基本上是

obs$.flatMap((data) => Observable.from(arr))
Run Code Online (Sandbox Code Playgroud)