javascript - 解决 JS 中的异步生产者-消费者问题
问题描述
我有一个数据生产者和一个数据消费者。生产者异步生产,反过来我希望消费者在有数据消费时异步消费。
我解决这个问题的直接想法是使用一些具有等待移位/获取的队列对象,就像python标准中的这个异步队列
但是,我搜索并找不到任何具有这种类型的数据结构供我使用的 JS 库。我原以为这将是一种常见的模式。
在 JS 中解决这个问题的常见模式是什么,是否有任何库可以提供帮助?
解决方案
如果数据的生产者只是自发地生产数据,而消费者只是想知道何时有一些新数据,那么这听起来就像消费者应该订阅一个在有新数据时会触发的事件。您可以只使用 node.js 中的 EventEmitter 对象来创建消费者可以收听的发射器,并且只要有新数据,生产者就会触发和事件。不需要外部库来实现这一点,因为内置EventEmitter
对象具有注册通知和触发通知所需的所有工具。
如果数据的消费者请求数据,生产者再去异步获取,那么这只是一个典型的异步API。API 可能应该返回一个承诺,并且生产者将在准备好新数据时使用新数据解决该承诺,或者如果检索数据时出错则拒绝它。
根据您提供的一点点描述,我认为没有任何特别需要精心设计的排队系统。这听起来就像发布/订阅或简单的事件通知系统。如果问题更复杂,请向我们提供有关数据生产者的更多详细信息,以便我们更好地将 node.js 中可用的工具与您的特定问题的需求相匹配。
推荐阅读
- python - 无法再在 jinja2 中创建 packageloader
- docker - 如何配置 docker-compose.yaml 以访问 Ubuntu 18 中的主机 Postgres?
- angular - 使用按钮而不是滑动来导航 radcalender
- excel - 如何复制粘贴,收到 VBA 错误
- c# - 如果.Count == 0,条件运算符不显示
- java - JAVA - 为扩展另一个类的子类的字段设置值
- vba - 如何使用 RunCode 运行函数?
- ssis - 打开 SSIS 包导致 Visual Studio Professional 2017(版本 15.9.14)崩溃
- excel - 使用 Excel 中的两列识别一对一关系之外的重复项
- c - 在 C 中调用函数两次而不干扰