如何“映射” asyncIterator?

时间:2019-11-26 20:42:31

标签: mongodb bluebird

最近的mongodb client 3.2.1更新表明,游标现在是启用Symbol.asyncIterator循环的合适的for..await..of

我以为这意味着它现在可以与bluebird.map(包括并发)一起使用,是一个有效的迭代器。

当我尝试时,出现以下错误:TypeError: expecting an array or an iterable object but got [object Null]

它确实适用于for..await..of

有一个cursor.forEach选项,但是无法设置并发性,这就是为什么我使用Bluebird的地图。 如果bluebird不支持asyncIterator,是否有任何替代方案?例如我看到某些地方可能会选择狂喜或轻快?

1 个答案:

答案 0 :(得分:0)

您可以使用it-batch来控制异步可迭代的并发性:

const batch = require('it-batch')

const batchedIteratable = batch(cursor, 2) // concurrency: 2
const result = await all(batchedIteratable)