Promise.map
,它允许你为并发操作量传递一个额外的参数。
e.g。
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
不是并发的。
我有什么方法可以改变我的代码以使其像那样工作吗?
答案 0 :(得分:3)
首先,Promise.each
实际上并没有分配数组。这是一个悬而未决的问题 - 我被分配了,我想道歉 - 我不是在开发盒子前面并且已经出国了。我会尽快解决这个问题。
其次 - 没有。目前没有这样的功能。创建Promise.each
是为了按顺序精确地运行事物。拉取请求可能受理,并且在PromiseArray
之上实现起来应该不会太难。我们之前没有真正看过用例。
同时您可以使用Promise.map
。