Ich habe eine Route in NodeJS Express definiert.Knoten js - Antwort senden, nachdem alle Zusagen aufgelöst wurden
Die Route ruft eine Funktion mehrere Male auf (wodurch eine Zusage zurückgegeben wird). Der von diesen Promises zurückgegebene Wert wird einem Array hinzugefügt, das dann mithilfe von res.json() an den Client gesendet wird.
Das Problem, mit dem ich konfrontiert bin, ist, dass, während Promises aufgelöst werden, res.json() ausgeführt wird, da es nicht auf die Rückkehr der Versprechen wartet. Ich denke, es wird eine Art Verkettungsmechanismus benötigt, aber ich kann nicht herausfinden, wie es geht.
Unten ist mein Code
app.get('/markers', function(req, res) {
var markers = [];
var marker1 = {"id": 1, "name": "London"};
// Get the lat and lng based on the address
geocoding(marker1.name).then(function(geocode) {
marker1.lat = geocode[0].latitude;
marker1.lng = geocode[0].longitude;
markers.push(marker1);
}, function(error) {
console.log(error);
})
var marker2 = {"id": 2, "name": "Chicago" };
geocoding(marker2.name).then(function(geocode) {
marker2.lat = geocode[0].latitude;
marker2.lng = geocode[0].longitude;
markers.push(marker2);
}, function(error) {
console.log(error);
})
var marker3 = {"id": 3, "name": "Munich" };
geocoding(marker3.name).then(function(geocode) {
marker3.lat = geocode[0].latitude;
marker3.lng = geocode[0].longitude;
markers.push(marker3);
}, function(error) {
console.log(error);
})
// return the lat and lng array to the client
res.json(markers);
})
Wie kann ich sicherstellen, dass 'res.json (Marker);' wird ausgeführt, nachdem alle drei Versprechen gelöst wurden.