当前位置: 首页 > 面试题库 >

如何在Java中对改装的反应式请求进行反抖动?

沈博延
2023-03-14
问题内容

我正在研究一个Android项目,该项目可通过使用Rx-Java进行翻新来进行请求,并且可以进行订阅。

但是,在某些交互中,可以多次调用此请求,而我只想在预定义的时间范围内执行最后一个请求(反跳)。

我尝试将debounce运算符直接应用于可观察对象,但是由于每次发生某些交互时都会执行以下代码,因此它不起作用:

mApi.getOnlineUsers()
    .debounce(1, TimeUnit.SECONDS)
    .subscribe(...)

我猜应该只创建一个可观察的对象,并且每次交互都应将执行“附加”到相同的可观察对象。但是,我对Rx Java还是陌生的,不知道该怎么做。

谢谢!


问题答案:

假设您想根据某个触发事件开始执行。

Observable<Event> trigger = ... // e.g. button clicks

您可以将触发事件转换为对API的调用,如下所示:

trigger
    .debounce(1, TimeUnit.SECONDS)
    .flatMap(event -> mApi.getOnlineUsers())
    .subscribe(users -> showThemSomewhere(users));

另外,请注意,debounce操作员将在时间范围内采取 最后一次 发生的措施,但throttlefirst将采取 第一项发生
。您可能要根据使用情况使用一个或另一个。



 类似资料:
  • 我不熟悉反应式编程。为了得到我的手,我试图建立一个简单的RESTAPI,但与请求验证和数据库操作。 以下是我想做的步骤。 验证传入请求参数 验证后保持继续链并从数据库获取 如果用户不存在于db返回一些错误响应 如果用户存在,返回带有用户名的成功响应 注意:请求和响应由类(UserRequest和UserResponse)表示。DB=使用无功驱动程序的Mongo。 我已经完成了验证工作,但现在我不知

  • 你如何防抖React.js? 我想防抖手柄。 我试过,但它不起作用。

  • 问题内容: 如何在Go中反转任意切片()?我宁愿不必编写和使用。有没有简单的内置方法来做到这一点? 问题答案: 没有一个简单的,内置的用于反转接口{}的部分。您可以编写一个for循环来做到这一点: Go 1.8中引入的reflect.Swapper函数可用于编写通用的反转函数: 游乐场的例子

  • 我正在创建一个登录页面使用反应,它允许用户使用Facebook,谷歌登录,或使用用户名和密码。我只是意识到,每次我使用Facebook登录时,都会两次调用onSubmit。只有Facebook身份验证导致此问题。正因为如此,我的后端验证被调用,并返回一个res.jsonmsg,这将在前端返回一个错误msg。如果用户决定使用Facebook登录,如何避免这种情况发生?我在社交媒体登录方面使用了反应-

  • 问题内容: 以下是React中的反模式吗?我喜欢这种模式,因为当实例化一个组件时,它在静态函数中为我提供了上下文。然后,我可以导入该类并调用静态方法来修改状态。还是可以通过更好的方式来完成? 问题答案: 显然,这取决于条件,可能是一种反模式,也可能是一个错误。静态类方法不应与类实例一起使用。绑定到特定的组件实例和用途,这只能证明类是单例是合理的(尽管单例也经常是反模式)。如果期望有多个类实例,那么

  • 通过调用直接创建通量并在的lambada表达式中使用接收器,与使用提供的接收器有什么区别? 在一个Flux只发出几个事件的最小示例中,我可以 与使用 为了澄清一下:我知道我可以在这里使用,但我的用例实际上是在Spring的和Spring WebFlux之间建立一个桥梁,在这里我想为每个传入的特定资源SSE请求创建一个Flux,然后将事件发布到这个Flux。 另一方面,它有不能处理背压的局限性。因此