【发布时间】:2017-03-17 10:14:06
【问题描述】:
Bluebird 有一个很好的函数,叫做 Promise.map,它可以让你传入一个额外的参数来表示并发操作的数量。
例如
yield Promise.map arrayOfThings, coroutine (thing) ->
newThing = yield thing.operate()
database.set newThing
, concurrency: 500
但是,Promise.map 将在内存中为所有arrayOfThings 保留一个由database.set newThing 返回的数组。我宁愿不将所有这些都存储在内存中,因为它会使我的服务器陷入困境。理想情况下,我想用Promise.each 替换Promise.map,这样它就不会将返回的值存储在内存中。不幸的是,这非常慢,因为Promise.each 不是并发的。
有什么办法可以改变我的代码让它像那样工作吗?
【问题讨论】:
标签: concurrency promise bluebird