gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 23:58:25 27 4
gpt4 key购买 nike

我知道根据定义,当一个 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/

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