2017-09-28 22 views
3

我想在錯誤Observable分成的Observable兩股Rxjs處理錯誤在單獨的管道和合並

catch運營商可以通過throw ING返回一個觀察或傳播錯誤兩種或返回Observable.throw

錯誤轉化爲有效

partition運營商只處理有效的值,沒有錯誤通過這個

我需要的是分裂Observable成兩個Observable秒的d過程則不同,它們合併如下圖所看到的

enter image description here

回答

1

模式這樣可能適合你的使用情況

step1 
 
    .map((data)=>{data:data}) 
 
    .catch(()=>Observable.of({error:'error'}) 
 
    .flatMap((res)=>{ 
 
    //process A and B should return observable 
 
    if(res.data) return processA(res) 
 
    return processB(res) 
 
    }) 
 
    .map(res=>{ 
 
    //do your merged processing here 
 
    }) 
 
    .subscribe()

+0

它不會工作,因爲第一後錯誤''step1'流不會發出任何更多的值。另一個較小的事情是'如果(res.data)返回processA(res)' –

+0

catch中的Observable.of應該將錯誤轉換爲正常的可觀察項目,所以它仍然會發射。請看這個例子 https://jsfiddle.net/c8hLezf4/ –

+1

你在技術上做了**沒有**扔你的jsfiddle和捕捉沒有命中 - 看到這裏:https://jsfiddle.net/c8hLezf4/3/。如果你確實拋出了,那麼數組的其餘部分將不會被髮射,因爲它會違反可觀察的接口。 –