gpt4 book ai didi

android - 取消订阅()之后的RXJava Single,没有调用doAfterTerminate()?

转载 作者:行者123 更新时间:2023-11-29 16:43:54 27 4
gpt4 key购买 nike

我有以下代码:

Single<Item> update(...) {
...
return Single.create(subscriber -> aCall.execute(..) {
public void onResponse(..){
subscriber.onSuccess(..)
}
public void onError() {
if(shouldReset) {
subscriber.unsubscribe();
} else {
subscriber.onError();
}
}
}));
}

调用方法时:

update(..) 
.doOnSubscribe(counter++)
.doAfterTerminate(counter--)
.subscribe();

我注意到,如果调用 subscriber.unsubscribe();,计数器永远不会减少。这是为什么?

如果我在 doOnUnsubscribe() 中更改 doAfterTerminate(),计数器会减少。

最佳答案

doAfterTerminate() 将在因 onErroronComplete 而终止的情况下起作用,但不会取消订阅。

您可以使用 doFinally 或将 doAfterTerminate()doOnCancel 结合使用,以便在取消订阅时也能获得调用。

引用this answer以获得对差异的解释。

关于android - 取消订阅()之后的RXJava Single,没有调用doAfterTerminate()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49380358/

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