Node.js attendre jusqu'à ce que async fonctions sont complètes, puis continuer avec le reste du code

Dans mon code j'ai 2 pour les boucles de l'exécution d'une fonction async (c'est la même fonction, dans les deux boucles), mais le code, après ces 2 boucles, doit attendre jusqu'à ce que l'exécution d'entre eux, avant qu'il s'exécute. C'est mon code:

for(var a = 0; a < videoIds.length; a++){
  if(videoIds){
    findVideo(videoIds[a], function(thumbnailPath, videoName){ //findVideo is the async function
      //it returns 2 values, thumbnailPath and videoName
      videoNames[a] = videoName; //and then these 2 values are written in the arrays
      thumbnaildPaths[a] = thumbnailPath;
      console.log('1');
    });
  }
}

//then the above code runs one more time but with different values, so I won't include it here (it's the same thing)
enter code here
console.log('3');
//the rest of the code
//writes the values from the loops to the database so I can't run it many times 

Si j'exécute le code, je vois 3 (à partir de la console.la fonction log) avant de voir des 1. Mais comme je l'ai dit ci-dessus, je dois attendre pour la boucle à la fin avant de passer. Le findVideo() fonction contient une Vidéo.find({}) méthode prévue par la mangouste, puis renvoie les valeurs thumbnailPath et videoName. Ce dont j'ai besoin pour faire est d'attendre pour les 2 boucles à la fin, et puis continuer, mais je ne peux pas avoir le reste du code à l'intérieur de la boucle pour des raisons évidentes! Est-il possible de résoudre ce problème? Merci!!!!

  • La boucle avec la fonction est là, juste pour s'assurer que certaines vidéos sélectionnées ne existent et qu'ils sont téléchargés par l'utilisateur (req.utilisateur pour être exact)
  • Vous pouvez prendre un coup d'oeil à la async mnp modulefor la gestion asynchrone contrôle de flux
  • Utiliser des promesses. Ils sont là pour cela. npmjs.com/package/promise
  • Utilisation Promise.all
InformationsquelleAutor Jim | 2016-06-27