gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:13:23 25 4
gpt4 key购买 nike

我试图用简单的代码在可观察对象中抛出错误:

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

但由于某种原因,throw 未定义。我不知道为什么在我的类(class)中名列前茅,我有以下导入:

import 'rxjs/observable/throw';

我也尝试过:

import 'rxjs/Observable/throw';

和:

import 'rxjs/add/observable/throw';

但是没有一个起作用?我错过了一个技巧吗?

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

最佳答案

观察者(在 RxJS v5 中已重命名为“订阅者”,仅供引用)没有名为 throw() 的方法。您正在混淆 Observables(定义序列和这些序列上的运算符)和订阅者/观察者(仅从 Observable 接收下一个/错误/完整消息)。

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

此方法也比使用 Observable.create(observer => ...) 和调用 observer.error(...) 更稳健,因为生成的结果Observable 保证遵守 Rx 合约。如果您使用 .create(),则必须手动执行以下操作:确保在错误发生后不再发出进一步的通知、Observable 的所有后续订阅者立即收到错误通知等。使用 Observable.throw(...),这一切都会自动为您处理。

关于javascript - RxJS - 可观察模块 - 抛出未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39268000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com