我正在尝试遍历数组并为每个iteratee创建记录。这就是我在另一个问题中提到的内容:
async.each(data, (datum, callback) => {
console.log('Iterated')
Datum.create({
row: datum,
}).exec((error) => {
if (error) return res.serverError(error)
console.log('Created')
callback()
})
})
不幸的是,这导致:
Iterated
Iterated
Iterated
Created
Created
Created
不是这个想要的:
Iterated
Created
Iterated
Created
Iterated
Created
我做错了什么?
最佳答案
async.eachSeries()将一次运行一次迭代,并等待每个迭代终止,然后再继续下一步。
听起来这是瓶颈。我不喜欢连续运行异步代码,因为这通常会使进程变慢。这种方法怎么样:
data
,您知道需要多少个标识符。 n
这样的标识符(包括必要的增量等),然后将该Array返回到前端。现在,您可以使用该预先计算的ID数组/将其映射到数据数组,从而在paralell中运行常规请求。 这样可以将运行时间从
(createAnId + request) * data.length
大大减少到单个迭代的运行时间。由于所有这些请求都可以并行运行,因此大部分重叠。