Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待forEach循环_Javascript_Node.js_Express - Fatal编程技术网

Javascript 等待forEach循环

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

我有一个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.checkDomainAvailability(domain).then(data => {
      domains.push(data);
    });
  }
循环将迭代my
TLD
数组,并检查每个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的
,但仍然看到了相同的结果。我将尝试编辑。