【问题标题】:How to efficiently detect changes in an array that changes over time如何有效地检测随时间变化的数组中的变化
【发布时间】:2019-04-10 10:50:27
【问题描述】:

我打算连续轮询几个端点,在那里我接收到 JSON 形式的对象数组。这些对象必然会随着时间而改变,并且每个对象都有一个唯一的 id。我想有效地观察数组中的任何新对象(一个或多个对象可能已被新对象替换)。我想避免遍历整个数组并将 id 与我保存到某个数据库的前一个数组的 id 进行比较,这是因为新对象可能在数组的末尾,我会浪费时间进行所有这些比较。

我将如何处理这种情况?例如。使用某种队列。在这种情况下使用 ReactiveX (RXJS) 是否理想?

我正在使用 Node.js 进行实施。

【问题讨论】:

  • 如果端点可以在 smth 更改的情况下设置一个标志,那么就是这样。如果你对 n^2 数组比较有冲突,那么就有哈希图,否则我想不出任何其他方法来知道 smth 是否改变了。您可以计算整个 json 的某种散列,但它不太可能比与 hashmap 相比更快。

标签: javascript node.js rxjs queue reactive-programming


【解决方案1】:

RXJS 是一个很好的解决方案,如果您不想为实现而烦恼,这是理想的选择。

或者,您可以使用Observer Pattern(提示,使用 EventEmitter 来监听更改),如果您想拥有代码和实现的所有权,请走这条路。

最后一种选择是使用 npm 模块(如 this)。这似乎遵循观察者设计模式。但是您可以使用它以及为您自己的实现提供灵感。

但最快的可能是使用 RxJs。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2020-03-09
    • 2013-03-31
    相关资源
    最近更新 更多