gpt4 book ai didi

java - 由 Observable.defer() 创建的 Observable 上的 retry() 会触发一个新的 Observable 吗?

转载 作者:行者123 更新时间:2023-11-29 08:42:04 25 4
gpt4 key购买 nike

private Observable<String> serverResponsesStream() {
return Observable.defer(() -> Observable.combineLatest(
ComSocketFactory.createObservable(), // generates new Observable<ComSocket> instance
getMessageStream(),
(comSocket, msg) -> {
try {
final String serverResponse = comSocket.transfer(msg);
if (serverResponse == null) {
throw new IOException("Server response is null.");
}
return serverResponse;
} catch (IOException e) {
throw OnErrorThrowable.from(e);
}
}));
}


// ...

serverResponsesStream()
.retry()
.subscribe(// do something);

我是否理解正确,因为我订阅了一个带有 defer() 的 Observable使用 retry() 的后果将是我的ComSocketFactory生成一个新的 Observable<ComSocket>实例?

最佳答案

根据文档

Returns an Observable that calls an Observable factory to create an Observable for each new Observer that subscribes.

Observable.retry() 重新订阅 Observable,所以是的 - 您从 ComSocketFactory.createObservable() 获得了新的 Observable。

关于java - 由 Observable.defer() 创建的 Observable 上的 retry() 会触发一个新的 Observable 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39308618/

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