Bluebird имеет приятную функцию под названием Promise.map
, которая позволяет передать дополнительный аргумент для количества параллельных операций.Есть ли способ использовать Promise.each Bluebird одновременно?
например.
yield Promise.map arrayOfThings, coroutine (thing) ->
newThing = yield thing.operate()
database.set newThing
, concurrency: 500
Однако Promise.map
будет держать массив любых database.set newThing
возвращается в памяти для всех arrayOfThings
. Я бы предпочел не хранить все это в памяти, поскольку это забивает мой сервер. Оптимально я хотел бы заменить Promise.map
на Promise.each
, чтобы он не сохранял возвращаемые значения в памяти. К сожалению, это очень медленно, потому что Promise.each
не является одновременным.
Есть ли способ изменить мой код, чтобы он работал так?