Grundsätzlich, was ich tun wollte, ist warten und die ersten beiden Funktionen Ergebnisse erhalten und diesen Wert an die 3. Funktion übergeben. Daher habe ich mit dem Node Q-Modul den folgenden Code ausprobiert.Knoten JS erhalten Werte von mehreren Versprechen
getAddressDetail("", 51.528308, -0.3817812).then(function (pickupLoc) {
return pickupLoc.location;
}).then(function (pickupLocation) {
var drop = getAddressDetail(, 51.528308, -0.3817812);
return [pickupLocation,drop.location];
})
.then(function (pickupLocation, dropLocation) {
console.log("#####" + pickupLocation +"$$$" + dropLocation)
})
.done();
EDIT
function getAddressDetail(location = "", lat, long) {
var deferred = Q.defer();
var getLocation = "";
if (location == '' || location == 'undefined') {
var url = 'https://maps.googleapis.com/maps/api/geocode/json?key={APIKEY}&latlng=' + lat + ',' + long + '&sensor=false';
request({
url: url,
json: true
}, function(error, response, body) {
if (!error && response.statusCode === 200) {
getLocation = body.results[0].formatted_address;
deferred.resolve({
'location': getLocation
});
//console.log("*******" + getLocation);
}
})
} else {
getLocation = location;
deferred.resolve({
'location': getLocation
});
}
return deferred.promise;
}
jedoch nicht dieser Code nicht Wert zurück, der dann Code "Droplocation" in der zweiten definiert, als undefiniert zurück. Siehst du irgendwelche Probleme hier?
Vielen Dank im Voraus.
Gibt 'getAddressDetail' ein Versprechen zurück? –
yep sehen die Bearbeitung. –
Sie warten nicht, dass die zweite 'getAddressDetail' beendet wird, deshalb haben Sie das Problem mit' dropLocation' beginnen 'undefined'. –