Rx java 防止多个api调用

Rx java 防止多个api调用,rx-java,rxjs,reactive-programming,rx-swift,reactivex,Rx Java,Rxjs,Reactive Programming,Rx Swift,Reactivex,如何在不保存状态(例如,将状态保存到“isLoading”属性)的情况下防止多次长api调用(例如,用户点击按钮数次)。此处缺少要求,但假设您希望避免在执行一次调用时进行额外调用,直到请求完成,您可以使用take(1)使用repeat()和可选的retry(),take(1)将限制发射到第一次点击,repeat()将在onComplete()时再次重新订阅,这意味着网络请求已完成,因此您将能够再次收到单次点击并执行请求。还可以考虑Rebug()用于重新提交失败(这不会重复请求,但会在单击时再次请

如何在不保存状态(例如,将状态保存到“isLoading”属性)的情况下防止多次长api调用(例如,用户点击按钮数次)。

此处缺少要求,但假设您希望避免在执行一次调用时进行额外调用,直到请求完成,您可以使用
take(1)
使用
repeat()
和可选的
retry()
take(1)
将限制发射到第一次点击,
repeat()
将在
onComplete()
时再次重新订阅,这意味着网络请求已完成,因此您将能够再次收到单次点击并执行请求。还可以考虑Rebug()用于重新提交失败(这不会重复请求,但会在单击时再次请求)


此处缺少要求,但假设您希望避免在有一个执行时进行额外调用,直到请求完成,您可以将
take(1)
repeat()
一起使用,也可以选择
retry()
take(1)
将发射限制在第一次单击时,
repeat()
将在
onComplete()
时再次重新订阅-这意味着网络请求已完成,因此您将能够再次收到单击并执行请求。还可以考虑Rebug()用于重新提交失败(这不会重复请求,但会在单击时再次请求)


您可以为此使用去盎司功能:

.debounce(400, TimeUnit.MILLISECONDS)

您可以为此使用去盎司功能:

.debounce(400, TimeUnit.MILLISECONDS)

可能使用
。取(1)
?如果看不到更多的上下文,很难说。是的,但我需要在api调用完成后重新订阅。可能使用
。采取(1)
?很难说没有看到更多的上下文。是的,但我需要在api调用完成后重新订阅。就是这样!但我使用的是RxSwift,其中缺少“repeat”方法:X@JaSHin你确定吗?您可能只需要更新您的软件包。不过,我对Swift中的包管理一无所知。正如@AluanHaddad所说,这在RxSwift中可能被称为repeatElement,但我对RxSwift并不熟悉。。(你把RxJava标记:)我就在这里。呵呵,我甚至都没看函数的名称。顺便说一句,我不是Java爱好者。我是.NET和JavaScript异教徒。@AluanHaddad@yosriz repeatElement在RxSwift中有不同的语法:
Observable.repeatElement(1,scheduler:MainScheduler.instance)
它看起来不一样。就是这样!但我使用的是RxSwift,其中缺少“repeat”方法:X@JaSHin你确定吗?您可能只需要更新您的软件包。不过,我对Swift中的包管理一无所知。正如@AluanHaddad所说,这在RxSwift中可能被称为repeatElement,但我对RxSwift并不熟悉。。(你把RxJava标记:)我就在这里。呵呵,我甚至都没看函数的名称。顺便说一句,我不是Java爱好者。我是.NET和JavaScript异教徒。@AluanHaddad@yosriz repeatElement在RxSwift中有不同的语法:
Observable.repeatElement(1,scheduler:MainScheduler.instance)
它看起来不一样。