gpt4 book ai didi

rx-java - 调用 d.dispose() 或 s.cancel() 方法的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-02 03:51:59 26 4
gpt4 key购买 nike

在 RxJava2 中,Observer 接口(interface)和 Subscriber 接口(interface)中引入了一个新方法,名为 -

interface Subscriber<T>{             
@Override
public void onSubscribe(Subscription s)
{
s.cancel();
s.request(5);
}
....
}

interface Observer<T>{             
@Override
public void onSubscribe(Disposable d)
{
d.dispose();
}
....
}

我看到 onSubscribe() 方法总是在第一次调用,甚至在 onNext(T t) 之前调用,我也阅读了该文档,发现它的用途是如果您的工作已完成该特定 Observable,则用于处置资源。

问题是我们如何才能最初知道我们的工作已经完成并处置取消源或源与消费者之间的连接?那么调用 d.dispose()s.cancel()s.request(7) 的更好方法是什么? p>

最佳答案

流可以通过两种方式终止:

  1. 错误

  2. 完成

据我所知,在这两种情况下,您都不需要调用 dispose/cancel。确实是reactive stream contract says :

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

当然,您可以随时停止流,在流因错误而结束或完成之前。在这些情况下,您必须调用 dispose/cancel。使用:

  • dispose() 对于 Observable
  • cancel() 对于 Flowable

关于request()方法,如果你想建立“响应式(Reactive)拉取”就需要它,我认为它与cancel没有关系。您可以找到更多信息here

关于rx-java - 调用 d.dispose() 或 s.cancel() 方法的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45141992/

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