解决JS中的异步生产者-消费者问题

Tho*_*mas 3 javascript node.js ecmascript-6

我有一个数据生产者和一个数据消费者。生产者异步生产,反过来我希望消费者在有数据消费时异步消费。

我解决这个问题的直接想法是使用一些具有可等待 shift/get 的队列对象,就像 python 标准中的这个异步队列

但是,我搜索并找不到任何具有此类数据结构供我使用的 JS 库。我会认为这将是一个常见的模式。

在 JS 中解决这个问题的常见模式是什么,是否有任何库可以提供帮助?

jfr*_*d00 5

如果数据的生产者只是自发地产生数据,而消费者只是想知道什么时候有新数据,那么这听起来像是消费者应该订阅一个事件,只要有新数据就会触发。您可以使用 node.js 中的 EventEmitter 对象来创建一个消费者可以监听的发射器,并且生产者将在有新数据时触发和事件。不需要外部库来实现这一点,因为内置EventEmitter对象具有注册通知和触发通知所需的所有工具。

如果数据的消费者请求数据,然后生产者去异步获取数据,那么这只是一个典型的异步 API。API 可能应该返回一个承诺,并且生产者将在准备好时使用新数据解析承诺,或者如果检索数据出错则拒绝它。

根据您提供的一点点描述,我认为对精心设计的排队系统没有任何特别的需求。这听起来像是发布/订阅或简单的事件通知系统。如果问题更复杂,请向我们提供有关数据生产者的更多详细信息,以便我们更好地将 node.js 中可用的工具与您的特定问题的需求相匹配。