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

时间:2017-07-22 23:59:10

标签: angular rxjs observable flatmap

有人可以向我解释为什么.flatMap运算符可以接受返回Observablearray的函数吗?

official docs说:

  

FlatMap运算符通过应用函数转换Observable   您指定给源Observable发出的每个项目,该函数返回一个本身发出项目的Observable。

为什么它还会返回数组

例如,这些都是有效的:

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

obs$.flatMap((data) => {
    return new Observable<string>();
});

但这不起作用:

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

1 个答案:

答案 0 :(得分:4)

官方文档不相关,因为它们指的是RxJS 4而不是RxJS 5.

if( $('#email-error').length ) { var emailError = $('#email-error').clone(); setTimeout( function(){ $('#email-error').remove(); emailError.appendTo( $('#subscribe-error') ); }, 10); } 投影函数返回not just Observable but ObservableInput interface,适用于miscellaneous values that can be converted to observables

  

数组可以解释为observable,从左到右逐个发出数组中的所有值,然后立即完成。

这意味着

mergeMap

基本上是

的缩短版本
obs$.flatMap((data) => arr)