axios函数不使用js返回任何值
Axios function not returning any values with js
我正在使用一个使用 axios 的函数。我希望能够调用此函数并获取我试图 return 返回的数组。不幸的是我回来了未定义。我不知道是我只是 return 弄错了,还是与 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);
});
};
如果我像这样调用这个函数并将其注销:
console.log(filterItemsByRadius(userRadius, items));
那我就undefined了。我已经注销了我正在 returning 的数据,它是一个包含正确信息的数组,所以我一定是在 returning 的方式上做错了。
函数returns一个承诺。你可以这样称呼它:
filterItemsByRadius(userRadius, items).then(resp => {
console.log(resp);
});
您现在可以在控制台中看到结果。
我正在使用一个使用 axios 的函数。我希望能够调用此函数并获取我试图 return 返回的数组。不幸的是我回来了未定义。我不知道是我只是 return 弄错了,还是与 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);
});
};
如果我像这样调用这个函数并将其注销:
console.log(filterItemsByRadius(userRadius, items));
那我就undefined了。我已经注销了我正在 returning 的数据,它是一个包含正确信息的数组,所以我一定是在 returning 的方式上做错了。
函数returns一个承诺。你可以这样称呼它:
filterItemsByRadius(userRadius, items).then(resp => {
console.log(resp);
});
您现在可以在控制台中看到结果。