Объединение Promise.map с Promise.join - PullRequest
0 голосов
/ 24 мая 2018

У меня есть две переменные:

const primaryId = '123'; // always exactly one
const secondaryIds = ['234', '345', '456', '567', '678']; // can be many

Я должен выполнить асинхронную операцию для каждого идентификатора, но мне нужно убедиться, что я когда-либо выполняю не более 2 одновременных запросов одновременно.Это операции с базой данных, и я хочу избежать слишком большого разветвления во время одного вызова REST.

В настоящее время я структурировал его следующим образом:

const primaryPromise = doPrimaryPromise(primaryId);
const secondaryPromise = Promise.map(
    secondaryIds,
    secondaryId => doSecondaryPromise(secondaryId),
    { concurrency: 1 }
);
return Promise.join(
    primaryPromise,
    secondaryPromise
);

Однако Документация Bluebird говорит мне, что Promise.join будет выполнять обещания одновременно.Будет ли этот подход по-прежнему обеспечивать максимальный параллелизм из Promise.map или он переопределяется верхним уровнем Promise.join?

Я осознаю, что набирая это, Promise, возвращаемый Promise.map, вероятно, это то, что отвечает за соблюдение этого ограничения параллелизма, поэтому я должен быть в безопасности.Но я определенно был бы признателен за некоторые отзывы об этом подходе.

Примечание: async/await здесь для меня не вариант, к сожалению.

...