Ich bin neu in asynch Programmierung und ich kann Versprechen nicht verstehen. Ich versuche eine umgekehrte Geocodierungsbibliothek zu verwenden, in der lat/long an Google Maps gesendet wird und ein json, der den Ort detailliert angibt, zurückgegeben wird.Knoten js Versprechen in einer Methode
class Geolocator
{
constructor()
{
let options = {
provider: 'google',
httpAdapter: 'https',
apiKey: mapsKey,
formatter: null
};
this._geocoder = NodeGeocoder(options);
}
getLocationId(lat, lon)
{
this._geocoder.reverse({lat: lat, lon: lon})
.then(function(res) {
return this._parse(null, res);
})
.catch(function(err) {
return this._parse(err, null);
});
}
_parse(err, res)
{
if (err || !res)
throw new Error(err);
return res;
}
Als ich geolocator.getLocationId
nennen bekomme ich undefined
. Ich vermute, dass der Methodenaufruf beendet wird und undefined
zurückgibt. Was ist der beste Weg, das Versprechen zu kapseln?
'getLocationId' gibt undefined zurück, weil Sie nichts zurück. Wenn Sie das Ergebnis des Anrufs, den Sie gerade machen, zurückgeben möchten, setzen Sie eine "return" davor. – smarx
@smarx Ich habe das versucht, es gibt ein Promise-Objekt zurück. Nicht die Antwort. – mrQWERTY
Nun, es kann die Antwort nicht zurückgeben ... die Antwort existiert noch nicht. Sie müssen ".then" auf der Promise aufrufen und eine Funktion übergeben, um mit der Antwort aufgerufen zu werden. – smarx