开发者问题收集

获取 JSON 的异步函数不返回任何内容

2020-07-10
276

我的项目中有以下函数,我可以从多个文件访问它。

getCountry: async function () {
  let country = null
  try {
    axios
    .get('http://ip-api.com/json/')
    .then(response => (this.country = response.data.countryCode))
    console.log('Country', country)
  } catch (error) {
    console.log(error)
  }
  return country
}

它可以在其他文件上运行,但由于某种原因,在这种情况下,我无法在特定文件中成功使用它。

这是我的数据部分:

 data() {
    return {
      model: {
        country: '',
        state: '',
        city: ''
      },
      country: null
    }
  },

在安装部分,我尝试执行以下操作:

this.country = await this.getCountry()
if (this.country != null) {
  this.model.country = this.country
}

该值从未分配给 model.country。 当我检查 this.country 值时,它会从函数中获取结果。 我想这可能与它是一个异步函数有关,但我不确定该怎么做。

1个回答

await 应该在 async 函数内部使用,而不是在函数外部使用。 请尝试

getCountry: async function () {
  let country;
  try {
    const response = await axios.get('http://ip-api.com/json/');
    country = response.data.countryCode;
  } catch (error) {
    console.log(error)
  }
  return country
}
Praveen Dass
2020-07-10