如何在节点中同时启动多个等待进程



基本上我有几个异步函数正在等待对方完成,我想在同一时间启动这些函数的多个进程。现在我的代码等待,直到一个进程(一个循环)将完成,然后开始另一个,我想开始更多的循环在同一时间。

我代码:

async function Start() {
console.log("Starting...")
try {
for (let i = 0; i < 3; i++) {
var taskid = i

await AddBasket(taskid)
const url = await Basket(taskid)
const urlek = await Guest(taskid, url)
await ShipInfo(taskid, urlek)
}
}
catch (error) {
console.error(chalk.red("Error while starting", error));
}
}
Start()
In practice it looks like this: 
TASK: 0 Adding to cart
TASK: 0 Successfully added to cart
TASK: 0 Posting some to get checkout page.
TASK: 0 Successfully posted
TASK: 0 Scraping for checkout link.
TASK: 0 Successfully scraped
TASK: 0 Submitting shipping info
TASK: 0 Successfully Submitted shipping info
TASK: 1 Adding to cart
TASK: 1 Successfully added to cart....

我想让它看起来像:

TASK: 0 Adding to cart
TASK: 1 Adding to cart
TASK: 2 Adding to cart....

将循环体放入async函数中。然后,您可以启动多个,而无需等待每个。

将函数返回的promise组成一个数组,并使用Promise.all()在最后等待所有promise。

async function oneBasket(taskid) {
await AddBasket(taskid)
const url = await Basket(taskid)
const urlek = await Guest(taskid, url)
await ShipInfo(taskid, urlek)
}
async function Start() {
console.log("Starting...")
let baskets = [];
for (let i = 0; i < 3; i++) {
baskets.push(oneBasket(i));
}
try {
await Promise.all(baskets);
} catch (error) {
console.error(chalk.red("Error while starting", error));
}
}

最新更新