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

标签 javascript node.js ecmascript-6

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

我立即想到解决这个问题是使用一些具有可等待的移位/获取的队列对象,much like this async queue in the python standard

但是,我搜索了一下,没有找到任何具有这种类型的数据结构供我使用的 JS 库。我本以为这会是一种常见的模式。

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

最佳答案

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

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

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

关于javascript - 解决JS中的异步生产者消费者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56784171/

相关文章:

javascript - 解构数组数组并同时获取第一个元素?

javascript - 在 es6 for of 循环中使用 const

javascript - 如何在 javascript/jquery 中转义小于登录?

javascript - Wicket 口和 JavaScript : any way for Wicket to get notified of an updated text?

javascript - Express 4 – 将所有路由的 HTTP 重定向到 HTTPS

javascript - javascript的使用,不仅仅是为了美观,还用于服务器端

javascript - Angular - 使用 NGRX/Effects 加载特定项目的数据

javascript - 无法从 Azure 存储查看 PDF 嵌入 URL

node.js - 如何在(之前)PM2 启动时要求 dotenv/config 文件

javascript - 嵌套对象和数组解构