我正在为我的数据库创建种子数据。种子的功能是联合包裹发生器(https://www.npmjs.com/package/co):并行化包含co包装生成器的Promise的执行
createSeedData() {
co(function *() {
[...]
}
}
在一个点上,我试图创建40次拍卖每一个投标。 到现在为止我有一个for循环是这样的:
for (let i = 0; i <= 40; i++) {
let auction = yield auction.create({
[...]
}) // Async creation of model and persisting it in db
yield bid.create({
auction: auction.id
[...]
})
}
现在我想创建并行拍卖,但我不能完全得到它的工作。
co
支持与数组一起使用yield时的并行执行。
但是,我仍然需要先创建一个发票,然后使用收益对它进行出价。
我试着在承诺和内部共同包装的生成器函数中包装上述内容,但它只是从来没有完成执行。
我该如何解决这个问题?(如果可能的话,而无需使用多个软件包)
这里是我的尝试与内发电机:
let promises = []
for (let i = 0; i <= 40; i++) {
promises.push(new Promise(
co(function *(resolve, reject) {
let auction = yield auction.create({
[...]
}) // Async creation of model and persisting it in db
yield bid.create({
auction: auction.id
[...]
})
)
resolve()
))
}
yield invoicePromises
失信于救援,的确如此!请向我们展示您使用内部发生器的尝试。另外,'create'返回的是,它是否已经使用promise? – Bergi
@Bergi'create'返回一个Promise。我添加了内部发生器。 – Hedge