相关疑难解决方法(0)

Promise.all消耗我所有的RAM

我有一个我正在使用的API的速率限制器,它允许每秒20个请求.所有请求都是基于承诺的,一旦有响应,承诺将通过API数据解决.

问题:

我设置了一个promiseArray,它包含所有等待响应的58k承诺.所以内存越来越慢,直到我的内存耗尽为止.在我的具体情况下,我不需要将已解析的数据传递给我then(),数据占用了我所有的RAM.

代码:

  }).then(() => {
    // 2. Crawl for all clanprofiles from these leaderboards
    const promiseArray = []
    for (let i = 0; i < clanTags.length; i++) {
      // Resolved data from getClanProfile() is eating up all my RAM
      const p = backgroundScheduler.getClanProfile(clanTags[i], true)
      promiseArray.push(p)
    }
    return Promise.all(promiseArray)
  }).then(() => {
Run Code Online (Sandbox Code Playgroud)

那么有没有办法等待promiseArray被解析而不需要解析数据?

javascript node.js bluebird

6
推荐指数
1
解决办法
1032
查看次数

向一个每分钟只能处理 20 个请求的 API 发出多个请求

我有一个返回承诺的方法,该方法在内部调用一个 API,该 API 每分钟只能有 20 个请求。问题是我有一大堆对象(大约 300 个),我想为每个对象调用 API。

目前我有以下代码:

    const bigArray = [.....];

    Promise.all(bigArray.map(apiFetch)).then((data) => {
      ...
    });
Run Code Online (Sandbox Code Playgroud)

但它不处理时序约束。我希望我可以使用 _.chunk 和 _.debounce from 之类的东西,lodash但我无法理解它。有人可以帮我吗?

javascript node.js

1
推荐指数
1
解决办法
1385
查看次数

标签 统计

javascript ×2

node.js ×2

bluebird ×1