RxJS - 可观察模块 - 抛出未定义

RxJS - Observable Modules - throw undefined

我正在尝试使用简单的代码在 observable 中抛出错误:

return Observable.create((observer) => {
  observer.throw(new Error('Test'));
});

但由于某些原因,throw 未定义。我不知道为什么在 class 的顶部,我有以下导入:

import 'rxjs/observable/throw';

我也试过:

import 'rxjs/Observable/throw';

和:

import 'rxjs/add/observable/throw';

但是none还在工作?我是不是漏掉了什么技巧?

我将 rxjs@5.0.0-beta.6 与 angular@2.0.0-rc.4 结合用于 Ionic 2。

观察者(已在 RxJS v5 中重命名为 "Subscribers",仅供参考)没有名为 throw() 的方法。您混淆了 Observables(定义序列和这些序列上的运算符)和 Subscribers/Observers(仅从 Observable 接收 next/error/complete 消息)。

你想要的是一个只发出错误对象的 Observable。然后,任何订阅它的 Subscriber/Observer 都会收到 .error() 通知。因此,不要使用 Observable.create(),而是使用 Observable.throw(new Error('Test')).

此方法也比使用 Observable.create(observer => ...) 和调用 observer.error(...) 更健壮,因为生成的 Observable 保证支持 Rx 契约。如果你使用 .create(),你必须手动做一些事情,比如,确保在错误发生后不再发出进一步的通知,所有后续的 Observable 订阅者立即收到错误通知,等等。使用 Observable.throw(...) ,这一切都会自动为您处理。