当前位置: 首页 > 知识库问答 >
问题:

_.使用RXJS可观测数据实现节流

田冥夜
2023-03-14

我是Rxjs可观测对象的新手,我需要使用Rxjs实现节流。

在下划线中,我们使用下面的行来实现这一点-

_.throttle(functionName, timespan, {trailing : true/false}).

请协助如何使用可观察到的数据。

共有2个答案

况谦
2023-03-14

看看RxJs中的示例操作符

下面是一个关于div上的mousemove事件的简单示例。

const source = document.getElementById('source');

Rx.Observable
  .fromEvent(source, 'mousemove')
  .sample(1000)
  .map(event => ({x: event.offsetX, y: event.offsetY}))
  .subscribe(console.log);
#source {
  width: 400px;
  height: 400px;
  background-color: grey;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.1.0/rx.all.js"></script>

<div id="source"></div>
汤念
2023-03-14

只需使用节流运算符。

Rx.Observable.fromEvent(window, 'mousemove')
  .throttle(500)
  .subscribe(x => console.log(x));

它将限制事件,以便在一个500毫秒窗口内只能通过一个事件。

 类似资料:
  • 在组件中: 在init上,我可以观察到 如何获取当前值,如?

  • 我有一个沙盒,它订阅了一个消息流,我想过滤该流,以查找已发送到或从特定用户使用另一个组件中指定的路由参数接收的消息。 messages.sandbox.ts: messages.detail.container.ts this.matching消息$似乎只包括this.received消息$但是我知道this.sent消息$不是空,因为我可以在我的模板中使用它没有问题。 我是不是遗漏了一些合并观测

  • 我正在使用angularfire,我得到了一个连续的阵列流,其中包含任务ID。我需要获取数组中每个id的任务文档作为一个新的可观察的。然后将任务文档数组返回到流中,这样我就可以在组件中订阅它并显示任务列表。 到目前为止,我用mergeMap得到了它。我分割阵列,获取任务文档并将它们返回到流中。我的解决方案唯一的问题是,当我订阅可观察到的时,我没有得到一系列任务,但每个任务都是一个单一的变化,我不能

  • 使用rxjsv6 所以我有多个我想要跟踪/观察的变量,当它们中的任何一个发生变化时,触发一个可观察对象来调用一个API,该API然后根据这些变量更新其他内容。 我想我可能会在上触发一个事件来强制可观察对象做一些事情,但它不会根据我想要的返回结果 例如。 然而,在可观测数据上没有订阅方法。我试图修改我的另一个观察值(这是可行的)

  • 我有一个服务,有一个方法foo。在该方法中,我订阅了一个可观察的(超文本传输协议-客户端)。 我喜欢从foo返回一个布尔值,该值取决于get。这不起作用,因为http.get是asynchrouns-在http.get完成之前调用return。 我怎样才能使这个同步? 编辑 返回可观察的布尔值在这里不是一个选项。这是因为我处理get in foo的响应(此处未显示),但我也需要根据它的返回来执行f

  • 我在实现一个我已经实现的函数的可观察点击事件时遇到了麻烦。到目前为止,我看到的示例是使用或实现的,就像这样; 他们的html 现在考虑下面的实现。 组件技术 index.html 服务台 我的问题是如何使用我当前的,并且在使用我找到的方法时仍然能够订阅我的方法。(即本文中的示例代码)我理解(我认为)流,以及可观测的概念,但这是我最不理解的。 提前感谢您的帮助。