Инструменты пользователя

Инструменты сайта


nodejs:steams:promise.all_restrict

Это старая версия документа!


Каков наилучший способ ограничения concurrency при использовании ES6 Promise.all()?

У меня есть код, который выполняет итерацию над списком, который был запрошен из базы данных и делает HTTP-запрос для каждого элемента в этом списке. Этот список иногда может быть достаточно большим (в тысячах), и я хотел бы удостовериться, что не нахожусь на веб-сервере с тысячами параллельных HTTP-запросов.

Сокращенная версия этого кода в настоящее время выглядит примерно так:

function getCounts() {
  return users.map(user => {
    return new Promise(resolve => {
      remoteServer.getCount(user) // makes an HTTP request
      .then(() => {
        /* snip */
        resolve();
      });
    });
  });
}

Promise.all(getCounts()).then(() => { /* snip */});

Этот код работает на Node 4.3.2. Чтобы повторить, можно ли Promise.all управлять так, чтобы выполнялось только определенное число Promises в любой момент времени?

ОТВЕТЫ

nodejs/steams/promise.all_restrict.1652605125.txt.gz · Последние изменения: 2023/01/12 12:17 (внешнее изменение)