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(...)
,这一切都会自动为您处理。
我正在尝试使用简单的代码在 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(...)
,这一切都会自动为您处理。