我正在爲我的數據庫創建種子數據。種子的功能是聯合包裹發生器(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