2017-08-03 80 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(); 
}) 
...