我开始使用RxJS,但我不明白为什么在此示例中我们需要使用类似flatMap
or 的函数concatAll
;数组的数组在哪里?
var requestStream = Rx.Observable.just('https://api.github.com/users');
var responseMetastream = requestStream
.flatMap(function(requestUrl) {
return Rx.Observable.fromPromise(jQuery.getJSON(requestUrl));
});
responseMetastream.subscribe(url => {console.log(url)})
如果有人可以直观地解释正在发生的事情,那将非常有帮助。
当我开始看时,Rxjs
我也偶然发现了那块石头。帮助我的是以下几点:
flatMap
:http : //reactivex.io/documentation/operators/flatmap.htmlflatMap
那找到,必须去看看mergeMap
(另一个名字)。最后查看来自RxJava的类型信息。未键入Javascript在这里没有帮助。基本上,if Observable<T>
表示一个可观察对象,该对象可推入T类型的值,然后flatMap
将type函数T' -> Observable<T>
作为其参数,然后返回Observable<T>
。map
接受type函数T' -> T
并返回Observable<T>
。
回到您的示例,您有一个从URL字符串产生promise的函数。所以T' : string
和T : promise
。而从我们之前说的promise : Observable<T''>
,所以T : Observable<T''>
,有T'' : html
。如果将那个Promise Production函数放入中map
,您将获得所需的Observable<Observable<T''>>
时间Observable<T''>
:您希望可观察对象发出html
值。flatMap
之所以这样称呼,是因为它会使()的结果变平(除去可观察层)map
。根据您的背景,这对您来说可能是中文,但是通过输入信息和来自此处的图纸,一切对我来说都非常清楚:http : //reactivex.io/documentation/operators/flatmap.html。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句