【问题标题】:Batch task execution every 500ms每 500ms 执行一次批处理任务
【发布时间】:2020-02-02 21:09:50
【问题描述】:

你有一个 react/node 应用程序,它接收来自应用程序外部的消息。收到消息后,我的 react 应用程序会显示桌面通知并发出声音。我的这个工作很好,除了如果应用程序在一个短窗口内收到多条消息(即 10 条消息),我会看到多个桌面通知和多个声音。

我显然需要应用程序来处理 10 条传入消息,但我无法找到将通知警报“批处理”成单个通知的方法。

我看过async/cargo,但实际上看起来与我想要的相反。 我需要能够说“为应用在 500 毫秒内收到的每组消息发送一次通知和声音”

我不是在寻找代码帮助,而是更多概念上的帮助。是否有软件包可以帮助简化此类操作?

【问题讨论】:

  • 在我看来,您的应用程序需要有一个“缓存”通知机制,该机制将首先将其放入队列中,并且: - 如果未经过 500 毫秒且新通知到达,则将其放入队列中 - 如果500 毫秒过去了,没有新的通知 PING

标签: node.js reactjs async.js


【解决方案1】:

您想要限制或消除呼叫以显示通知和 ping。 Lodash 和 rxjs 是提供此功能的库。

限制一个函数意味着该函数不能/不会被调用比限制时间更频繁,即每 N 毫秒不超过一次,而去抖动等待直到指定的时间过去了该函数 wasn 't/isn't 调用然后最终调用该函数,即每次调用该函数时,它在调用回调之前等待 N 毫秒,如果在到期之前调用计时器将重置。

rxjs 的学习曲线更陡峭,但如果您已经在使用它或事件流/observables,那么它会很适合。Lodash 将与现有的函数回调一起使用。

【讨论】:

  • 这非常有用,正是我所需要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 2018-04-19
  • 2011-12-15
  • 2021-08-02
  • 2017-12-30
  • 1970-01-01
  • 2014-09-06
相关资源
最近更新 更多