【发布时间】:2016-07-18 05:51:11
【问题描述】:
考虑以下几点:
- 每秒最多可有 100 个并发请求的 Web 应用程序
- 当前每个传入请求都会向端点发出 http 请求以获取一些数据(最多可能需要 5 秒)
- 我只想发出一次 http 请求,即我不想同时调用同一个端点,因为它会返回相同的数据
- 这个想法是只有第一个请求才会进行http调用来获取数据
- 虽然此调用是“进行中”,但后续请求不会进行相同的调用,而是“等待”第一个进行中的请求完成。
- 当对数据的初始http请求得到响应时,它必须响应所有带有数据的调用。
- 我正在使用 Bluebird Promise 来实现执行 http 请求的异步函数。
我想创建/使用某种包装业务逻辑承诺方法的通用方法/类。这个通用方法/调用将知道何时调用实际的业务逻辑函数,何时等待飞行完成,然后在它有响应时解决所有等待的调用。
我希望已经有一个节点模块可以做到这一点,但想不出这种类型的实用程序会被称为什么。
类似于 lodash 油门/去抖动的东西,但不完全相同。
如果它不存在,我可以自己写,但很难为此想出一个合理的名称。
任何帮助将不胜感激。
【问题讨论】:
-
一个 Web 应用程序只能有 6 个并发请求,因为这是浏览器的硬性限制。老IE只能做2个。
标签: javascript node.js promise bluebird