javascript - Rxjs 在 Observable 出错后传递数据

标签 javascript rxjs reactive-programming observable

我知道根据定义,当一个 Observable 被Completed 或它有一个Error 时,它变得 并且你不能向它传递数据。 所以如果你想在 Error 之后传递数据,你需要创建一个新的 Observable。

我只是想知道您是否可以在发生错误 后以某种方式恢复 Observable,因为对我来说恢复它比创建一个具有相同功能的新对象更有意义?

例如:

const subject = new Rx.Subject();

subject.subscribe(
  data => console.log(data), 
  error => console.log('error')
);

subject.next('new data');
subject.next('new data2');

subject.error('error');

subject.next('new data3');

new data3 没有发送,因为之前有错误。
工作示例:https://jsbin.com/sizinovude/edit?js,console

PS:我希望订阅者有错误并在之后发送数据,看起来唯一的方法是创建一个新的 Observable 并在错误之后订阅新的 Observable。

最佳答案

不,我的理解是您不能在出现可观察到的错误后向订阅者发送更多数据。

Observable Contract 中的Observable Termination 部分状态:

When an Observable does issue an OnCompleted or OnError notification, the Observable may release its resources and terminate, and its observers should not attempt to communicate with it any further.

这对我来说意味着,如果您在 error 之后调用 next,任何订阅者都不会收到该值,因为他们会在收到错误通知后取消订阅。 Observable Termination 部分也提到了这一点:

When an Observable issues an OnError or OnComplete notification to its observers, this ends the subscription.

关于javascript - Rxjs 在 Observable 出错后传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41182413/

相关文章:

javascript - TinyMce 允许 HTML 标签

javascript - RxJs 在出错时调用 observable 并重复步骤

angular - Object(...)(...).takeUntil 不是函数

javascript - Rxjs 订阅队列

javascript - RxJs:如何根据可观察对象的状态进行循环?

reactive-programming - Project Reactor 3 中的 publishOn 与 subscribeOn

javascript - 是否可以在生命周期内(beforeCreate)导入 vue 组件文件?

javascript - 变量直接使用时是不一样的

javascript - 在输入 onChange 期间 react 改变父状态被卡住

typescript - 如何正确输入 fp-ts ObservableEither#fold?