Javascript 等待forEach循环
我有一个ExpressEndpoint,它可以做很多事情,其中之一就是根据GoDaddy的API检查域名的可用性。我不明白如何才能等待结果Javascript 等待forEach循环,javascript,node.js,express,Javascript,Node.js,Express,我有一个ExpressEndpoint,它可以做很多事情,其中之一就是根据GoDaddy的API检查域名的可用性。我不明白如何才能等待结果 // check domain availability const tlds = ["dev", "com", "tv", "io", "app", "me"]; for await (let tld of tlds) { let domain = `${brand}.${tld}`; godaddy.checkDomainAv
// check domain availability
const tlds = ["dev", "com", "tv", "io", "app", "me"];
for await (let tld of tlds) {
let domain = `${brand}.${tld}`;
godaddy.checkDomainAvailability(domain).then(data => {
domains.push(data);
});
}
循环将迭代myTLD
数组,并检查每个TLD的域名可用性。目前,axios将从checkDomainAvailability
返回承诺,解析数据并将数据推送到domains
数组(我相信这可以写得更好,但我对JS不太熟悉)
godaddy.checkDomainAvailability()
当前的结果显然是express在每个域被迭代之前发送域的结果。我怎样才能让它等待forEach循环
我尝试使用进行如下等待
,但结果相同
// check domain availability
const tlds = ["dev", "com", "tv", "io", "app", "me"];
for await (let tld of tlds) {
let domain = `${brand}.${tld}`;
godaddy.checkDomainAvailability(domain).then(data => {
domains.push(data);
});
}
这里最简单的解决方案是将循环逻辑封装在另一个(
async
)函数中,然后在主代码集中等待该函数的结果。例如:
app.post("/domains", async (req, res) => {
var brand = req.body.brand;
// check domain availability
const tlds = ["dev", "com", "tv", "io", "app", "me"];
let domains = await checkTLDs(tlds, brand);
res.send(domains);
}
这里,
checkTLDs()
是一个处理循环的async
函数。然后,主代码可以等待它完成后再执行res.send()
这里最简单的解决方案是将循环逻辑封装到另一个(async
)函数中,然后在主代码集中等待该函数的结果。例如:
app.post("/domains", async (req, res) => {
var brand = req.body.brand;
// check domain availability
const tlds = ["dev", "com", "tv", "io", "app", "me"];
let domains = await checkTLDs(tlds, brand);
res.send(domains);
}
这里,
checkTLDs()
是一个处理循环的async
函数。然后,您的主代码可以等待它完成,然后再执行res.send()
您可能需要尝试或查看此问题和答案,我认为它将帮助您指出正确的方向@user1538301我确实尝试了Wait的,但仍然看到了相同的结果。我将用我的尝试进行编辑。你可能想尝试或看看这个问题和答案,我认为它将帮助你指出正确的方向@user1538301我确实尝试了Wait的,但仍然看到了相同的结果。我将尝试编辑。