2017-10-20 23 views
0

Ich verwende eine Funktion, die Axios verwendet. Ich möchte in der Lage sein, diese Funktion aufzurufen und das Array zu erhalten, das ich zurückgeben möchte. Leider komme ich unbestimmt zurück. Ich weiß nicht, ob ich es einfach falsch zurückgebe oder ob es damit zu tun hat, dass Axios sich Zeit nimmt, einen Api-Anruf zu tätigen.Axios-Funktion gibt keine Werte mit js zurück

Hier ist mein Code:

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); 
    }); 
}; 

Wenn ich diese Funktion wie so rufen und melden Sie es aus:

console.log(filterItemsByRadius(userRadius, items)); 

Dann werde ich nicht definiert bekommen. Ich habe die Daten, die ich zurückgebe, ausgeloggt und es ist ein Array mit den richtigen Informationen, so dass ich etwas falsch machen muss, wie ich es zurückgebe.

Antwort

2

Die Funktion gibt ein Versprechen zurück. Sie können es so nennen:

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

Sie können jetzt das Ergebnis in der Konsole sehen.

Verwandte Themen