-1

在以下作为 API 页面从 Nextjs 应用程序导出的函数中,该domainnames数组在 200 响应中没有返回任何内容。

但是,如果我不使用该GetDomainStatus()函数而只是将项目从response.data.resultsinto中推送domainnames,那么 JSON 响应就会被填充。

export default function GetSuggestions(req, res){
const keyword = req.query.q;
const tlds = '.com,.net,.io,.org,.co,.xyz,.app,.us,.blog,.shop,.land,.video,.review,.host,.dev';
let queryPath = `${suggestionsURL}?include-registered=false&tlds=${tlds}&include-suggestion-type=true&sensitive-content-filter=true&use-numbers=true&max-length=20&lang=eng&max-results=100&name=${keyword}&use-idns=false`
let domainnames = [];

axios.get(queryPath).then(response => {

  response.data.results.forEach(item => {

      GetDomainStatus(item.name).then(a => {
        domainnames.push({
          name: item.name,
          avail: a
        })
      })
  })
  res.status(200).json(domainnames);
});

}

这是我实际上无法domainnames从承诺中访问数组的范围问题吗?

4

1 回答 1

0

这个解决方案奏效了。不确定它是否是最好的,但使用 promise.all 解决方案。

const domainnames = [];
const promises = [];

axios.get(queryPath).then(response => {

  response.data.results.forEach(item => {

    let newPromise = GetDomainStatus(item.name).then(a => {
        domainnames.push({
          name: item.name,
          avail: a
        })
    });
    promises.push(newPromise);
  })
  Promise.all(promises).then(r => res.status(200).json(domainnames));

});
于 2022-03-02T14:37:17.697 回答