【发布时间】:2021-10-04 16:03:00
【问题描述】:
基本上我有几个异步函数正在等待对方完成,我想同时启动这些函数的多个进程。现在我的代码会等到 1 个进程(1 个循环)完成,然后再启动另一个,我想同时启动更多循环。
我的代码:
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....
【问题讨论】:
-
您可能希望将
Promise.all与数组一起使用,然后等待结果 -
使用
await的目的是让异步代码看起来是同步的。如果您真的希望它是异步的,请不要这样做。
标签: javascript node.js loops asynchronous async-await