У меня есть две переменные:
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
здесь для меня не вариант, к сожалению.