有人可以向我解释为什么.flatMap
运算符可以接受返回Observable
或array
的函数吗?
FlatMap运算符通过应用函数转换Observable 您指定给源Observable发出的每个项目,该函数返回一个本身发出项目的Observable。
为什么它还会返回数组?
例如,这些都是有效的:
obs$.flatMap((data) => {
return [];
});
obs$.flatMap((data) => {
return new Observable<string>();
});
但这不起作用:
obs$.flatMap((data) => {
return 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)