Concurrency 有没有办法使用蓝鸟';我们保证,每一个都同时?

Concurrency 有没有办法使用蓝鸟';我们保证,每一个都同时?,concurrency,promise,bluebird,Concurrency,Promise,Bluebird,Bluebird有一个很好的函数名为Promise.map,它允许您为并发操作的数量传递一个额外的参数 e、 g 但是,Promise.map将为所有arrayOfThings在内存中保留任何database.set newThing返回的数组。我不想把所有这些都存储在内存中,因为它会使我的服务器陷入困境。最佳情况下,我希望将Promise.map替换为Promise.each,这样它就不会将返回的值存储在内存中。不幸的是,这太慢了,因为承诺。每个都不是并发的 有什么办法可以改变我的代码,使它像

Bluebird有一个很好的函数名为
Promise.map
,它允许您为并发操作的数量传递一个额外的参数

e、 g

但是,
Promise.map
将为所有
arrayOfThings
在内存中保留任何
database.set newThing
返回的数组。我不想把所有这些都存储在内存中,因为它会使我的服务器陷入困境。最佳情况下,我希望将
Promise.map
替换为
Promise.each
,这样它就不会将返回的值存储在内存中。不幸的是,这太慢了,因为
承诺。每个
都不是并发的


有什么办法可以改变我的代码,使它像那样工作吗?

首先,现在
承诺。每个
实际上并不分配数组。这有一个悬而未决的问题-我被指派了,我想道歉-我没有在一个开发箱前面,并且已经出国了。我会尽快解决这个问题

第二,没有。目前还没有这样的功能<代码>承诺。每个
都是为了精确地按顺序运行而创建的。拉取请求可能会被接受,在
PromiseArray
之上实现它应该不会太难。我们只是以前没有真正看到过用例

同时,您可以使用
Promise.map

yield Promise.map arrayOfThings, coroutine (thing) ->
  newThing = yield thing.operate()
  database.set newThing
, concurrency: 500