Javascript Axios函数不使用js返回任何值

Javascript Axios函数不使用js返回任何值,javascript,axios,Javascript,Axios,我正在使用一个使用axios的函数。我希望能够调用此函数并获取我试图返回的数组。不幸的是,我回来时没有定义。我不知道我是否只是返回了错误的api,或者是否与axios花时间进行api调用有关 这是我的密码: const filterItemsByRadius = (userRadius, items) => { axios .get('http://ip-api.com/json') .then(response => { const data = [

我正在使用一个使用axios的函数。我希望能够调用此函数并获取我试图返回的数组。不幸的是,我回来时没有定义。我不知道我是否只是返回了错误的api,或者是否与axios花时间进行api调用有关

这是我的密码:

const filterItemsByRadius = (userRadius, items) => {
  axios
    .get('http://ip-api.com/json')
    .then(response => {
      const data = [];

      const { lat, lon } = response.data;
      items.map(item => {
        let itemGeolocation;
        if (item.geolocation) {
          itemGeolocation = item.geolocation.coords;
        }

        const currentLocation = {
          latitude: lat,
          longitude: lon,
        };
        const distanceArr = geolib.orderByDistance(currentLocation, [itemGeolocation]);
        const miles = (distanceArr[0].distance / 1609.34).toFixed(2);
        if (miles <= userRadius) {
          data.push(item);
          return data;
        }
      });
    })
    .catch(err => {
      console.log(err);
    });
};

那我就没有定义了。我已经注销了返回的数据,它是一个包含正确信息的数组,因此我返回数据的方式肯定有问题。

函数返回一个承诺。你可以这样称呼它:

filterItemsByRadius(userRadius, items).then(resp => {
   console.log(resp);
});

您现在可以在控制台中看到结果。

该函数返回一个承诺。你可以这样称呼它:

filterItemsByRadius(userRadius, items).then(resp => {
   console.log(resp);
});
您现在可以在控制台中看到结果