[英]RxJS Promises Chaining
我對RxJS很陌生。 因此,我有一個流為不同的ajax調用創建了有效負載,然后使用flatMap檢索所需的數據,並且效果很好。 簡單。
const streamA = Rx.Observable.from(array);
const streamB = streamA
.map( val => /* build payload */ )
.flatMap( payload => Rx.Observable.fromPromise($.ajax(payload))
streamB.subscribe( result => /* got it */)
現在,我將為每個項目創建一個有效負載數組,但是問題是,現在訂閱流時,我會返回每個請求,但是完成后,只有初始元素要返回。
const streamC = streamA
.flatMap( payloads => {
return Rx.Observable.from(payloads)
.flatMap( payload => Rx.Observable.fromPromise($.ajax(payload))
streamC.subscribe( result => /* executed for every payload */)
我嘗試使用groupBy
返回正確的分組數組,並向我展示了可以鏈接Observable的方法,但是我仍然無法弄清楚如何正確地分配觀察者以實現元素。
const streamWLF = streamA
.flatMap( payloads => {
return Rx.Observable.from(payloads)
.flatMap( payload => Rx.Observable.fromPromise($.ajax(payload))
.groupBy((obs) => obs.key, (obs) => obs)
streamWLF.subscribe( result => {
result.subscribe(/* did my magic here*/);
})
所以我的問題是,哪種方法最好?
收到subStream項時,是否總是觸發訂閱的主Stream?
並且,如果可能的話,如何僅在subStream完成時如何訂閱subStream來觸發已訂閱的mainStream?
我認為您正在尋找forkJoin
運算符。
const streamC = streamA
.flatMap(payloads => Rx.Observable.forkJoin(payloads));
streamC.subscribe( results => /*An array containing the results from all payloads*/);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.