RxJS“抛出新错误”vs“Observable.throw”

时间:2017-07-01 18:06:52

标签: error-handling rxjs

throw new Error()Observable.throw()之间是否有区别?如果是,那又是什么?显然,因为Observable.throw存在,所以有一些原因,但除了较短的堆栈跟踪之外,我找不到任何差异。

Here's an example

1 个答案:

答案 0 :(得分:4)

Observable.throw在流中返回错误。例如,我期待Observable,但出于某种原因,我想返回一个错误。这些情况无法使用throw new Error()

例如:

var source = someStream$
    .flatMap(data => data?
             Rx.Observable.of(data): // Or any other async operation 
             Rx.Observable.throw('invalid data'));

这里flatMap期望一个Observable流,如果我们需要使用throw new Error(),我们需要做一个hack。

对于rx运算符,我可能还有其他优点,我不知道。