Google géocodant plusieurs adresses dans une boucle avec javascript, comment puis-je savoir quand tout est fait?

J'ai un formulaire qui vous demande une liste des endroits (pas beaucoup, normalement, à seulement 3 ou 4, mais ce nombre est dynamique). Lorsque le formulaire est soumis, je dois analyser les données, l'utilisation de géocodage de Google pour obtenir les emplacements, puis tracez une ligne reliant les points dans l'ordre. J'ai de l'analyse de travail, mais je suis bloqué sur le géocodage partie, principalement en raison de la nature asynchrone. Assumer mon adresse chaînes de caractères sont stockées dans le tableau "adresses", c'est à quel point j'ai obtenu:

function someFunction(addresses) {
  var coords = [];
  for(var i = 0; i < addresses.length; i++) {
    currAddress = addresses[i];
    var geocoder = new google.maps.Geocoder();
    if (geocoder) {
      geocoder.geocode({'address':currAddress}, function (results, status)
        if (status == google.maps.GeocoderStatus.OK) {
          coords.push(results[0].geometry.location);
        } 
        else {
          throw('No results found: ' + status);
        }
      });
    }
  }
  //Initially I tried to work with the data here, but it wasn't all present yet.
}

Le dessin de la ligne est assez facile, je l'ai fait avant lorsque les utilisateurs de l'géographiques lat/lng coordonnées. Mon problème est, car les coordonnées sont seulement ajoutés dans le rappel, comment puis-je savoir quand il est fait? Je ne peux pas juste dump que dans une fonction et mettre dans le rappel parce que j'ai besoin d'attendre jusqu'à ce que toutes les coordonnées ont été traitées.

J'ai aussi lu au sujet de quelqu'un qui a eu des problèmes avec des résultats pas revenir dans l'ordre, mais je ne comprenais pas fourni de réponse. Si quelqu'un a une réponse qui peut m'aider avec mon problème spécifique et s'assurer que les résultats de revenir dans l'ordre, je vous serais très reconnaissant.

NB: j'ai la main-bombardé que le code, donc il peut y avoir des fautes de frappe. Mon code donc loin des "œuvres", je ne sais pas qui à se déplacer à partir de ce que j'ai à faire quelque chose une fois que toutes les adresses sont traitées. Aussi, c'est actuellement développé comme une application interne pour les tests. Une fois le test terminé, il se conformer pleinement avec Google TOS. Cela signifie que je n'ai pas de page, je peux créer un lien. L'ensemble de l'application est également plus de 2 000 lignes de code et qui contient des information exclusive de la société en ce moment, qui finiront par disparaître, de sorte que le collage de l'ensemble de la chose ou de l'envoyer n'est pas envisageable. J'espère que cela ne posera pas trop de problème.

source d'informationauteur user985219