请问为什么.flatMap
操作符可以接受返回Observable
或array
的函数?
官方文档中提到:
flatMap
操作符通过将您指定的函数应用于源Observable发出的每个项目来转换Observable,其中该函数返回本身发出项目的Observable。
为什么它也可以返回数组?
例如,这两种方式都是有效的:
obs$.flatMap((data) => {
return [];
});
obs$.flatMap((data) => {
return new Observable<string>();
});
但这并不起作用:
obs$.flatMap((data) => {
return 1;
});
1
既不是数组也不是observable,所以当然不能起作用。 - cartantflatMap
是mergeMap
的别名。查看文档,你会发现该函数可以返回一个observable、一个promise或类似数组的值:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-mergeMap - cartantObservableInput
:http://reactivex.io/rxjs/class/es6/MiscJSDoc.js~ObservableInputDoc.html - cartant.flatMap
如何返回Observables数组呢?或者这不可能吗? - DolanflatMap
,则会得到一个可观察的嵌套可观察对象 - 称为高阶可观察对象。有运算符可以进一步展开这样的高阶可观察对象。请查看mergeAll
和concatAll
。此外,如果这些链接帮助您了解问题,您可能需要考虑添加自答案。 - cartant