title: Node js - send response after all promises are resolved
body: <p>I have a route defined in NodeJS Express.  </p>
  
  <p>The route calls a function multiple times (which returns a promise). Value returned from these Promises are added to an Array which is then send back to the client using res.json().</p>
  
  <p>The problem that I am facing is that while Promises are getting resolved, res.json() executes as it does not wait for the Promises to return. I think some kind of chaining mechanism would be needed but can't make out how to do it.</p>
  
  <p>Below is my code</p>
  
  <pre><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);
  
  })
  </code></pre>
  
  <p>How can I ensure that ' res.json(markers);' is executed after all the three Promises are resolved.</p>