【发布时间】:2019-03-15 17:48:19
【问题描述】:
我对标签有点抱歉,可能我理解我的问题不正确并且错误地使用它们但是..
我的项目面临的问题对我来说是新的,我以前从未经历过。因此,就我而言,我有来自 DB(Mongo,100'000+ 文档)的大量数据集响应,我需要 http-request 文档中的每个特定字段。
数据集中的示例数组如下:
{
_id: 1,
http: http.request.me
},
{
//each doc of 99k docs more
}
所以猜你已经明白我不能使用默认的for loop,因为
- 如果是
async我会收到大量的 API 请求并且会 被禁止/限制/无论如何 - 如果我做到了
one-by-one,我需要大约 12-23 小时 在我的循环完成之前等待。 (其实这种方式在 使用)
这就是我现在正在尝试做的事情
-
还有另一种方式,这就是我在这里的原因。我可以将我的巨大数组分成块,例如每个 5/10/100..N 并请求它们
one-by-one│→await[request_map 0,1,2,3,4]→filled │→await[request_map 5..10]→filled │→await[request_map n..n+5]→filled ↓
根据Split array into chunks 我可以轻松做到。但是我应该使用 2 个 for 循环,第一个将拆分默认数组,第二个 async-request 这个新数组(长度 5/10/100...N)
但我最近听说过反应式范式和RxJS(可能)可以解决这个问题。这是正确的吗?我应该使用什么运算符?我应该使用什么关键字来查找相关问题? (如果我用谷歌搜索反应式编程,我会收到很多使用 react.js 的无用结果,但不是我想要的)
所以我应该关心这一切,只写一个未优化的代码,还是有一个 npm-module 用于那个或另一个更好的模式/解决方案?
可能我在这里找到并回答 RxJS 1 array item into sequence of single items - operator我现在正在检查,但我也感谢任何相关的贡献 对这个问题
RxJS 在这种情况下确实很有帮助,值得一看。这是一个 此类问题的优雅解决方案
【问题讨论】:
-
澄清一下,整个请求数组是在内存中,还是每次都需要从数据库中查询一批 5 个请求?
-
Y,具有必要 url 的整个数组都在内存中,我只需要从它一个一个地查询一批 5(n) 个请求。据我了解,RxJS 很好。但是我仍然不明白如何将它与
http一起使用(但很容易按照我的意愿划分数组)
标签: javascript arrays asynchronous optimization rxjs