如何在响应式编程中管理命令异常?

时间:2017-11-14 13:32:17

标签: exception-handling rxjs

鲍勃叔叔在他的清洁法典书中说:功能应该做某事或回答一些事情。

所以命令(做某事)一定不能返回一些信息。但是,知道命令是否在没有错误的情况下执行是有用的。

为此,我们可以抛出一个我们在try / catch中捕获的异常。

但是,反应方式(rxjs)似乎有点不同。

如果我们采用此代码示例:

function test(var: number): Observable<void> {
  if(var == 2)
    return Rx.Observable.throw("error")

  return Rx.Observable.of(var)
}

let foo = test(1).catch(err => Rx.Observable.of(err))
foo.subscribe(val => console.log(val))

let foo2 = test(2).catch(err => Rx.Observable.of(err))
foo2.subscribe(val => console.log(val))

foo的控制台日志显示1并且它非常符合逻辑。 foo2的控制台日志显示&#34;错误&#34;这也是它的逻辑。

也许,我没有正确使用throw和.catch?

要使用catch运算符,我必须返回一个Observable,否则我有一个javascript错误(无法读取属性&#39; catch&#39; of undefined)。

这意味着我们总是必须回复一些东西?

0 个答案:

没有答案