2017-08-03 86 views
2

1)下面的代碼接受或者X和Y調用一些服務,推動值obeservable
2)當我們給invaild輸入即X,Y必須給空結果和obeservable必須是空的,我不得不拋出一些警報輸入
3)所以我如何檢查這種情況?如何檢查在rxjs可觀察到數組的長度

我試過isEmpty功能,它不工作請幫助我嗎?

const gridDataLoadRequest = GridDataLoadRequest 
    .withLatestFrom(filterParams) 
    .map(_.last); 

return gridDataLoadRequest 
    .map(partitionedCodesToSearchParams) 
    .flatMap((vals) => { 
     let [ X, Y ] = vals; 

     let A = _.isEmpty(X.codes) 
      ? Observable.of([]) 
      : storePlanningService.searchCustomerChoices(X); 

     let B = _.isEmpty(Y.codes) 
      ? Observable.of([]) 
      : storePlanningService.searchCustomerChoices(Y); 

     return Observable.zip(A, B).map(_.flatten); 
    }) 
    .publishReplay(1) 
    .refCount(); 
}; 

回答

0

如果您從RxJS中的任何回調中拋出異常,它將被捕獲並作爲錯誤通知發送。

這意味着你可以使用catch()返回一個空的可觀察:

.flatMap((vals) => { 
    ... 
    throw Error("It's broken"); 
}) 
.catch(err => { 
    console.log(err); 
    return Observable.empty(); 
}) 
...