Comment attendre pour la fonction avant la fin de la continuning à Node.js

Je suis en train de créer un parcours dans le Nœud.js/Express qui lit les données à partir de deux requêtes, puis incrémente un compteur basés sur les données recueillies à partir de la queires. Depuis Node.js est asynchrone mon total est affiché avant que toutes les données ont été lues.

J'ai créé un exemple simple qui arrive au point de ce que je suis en train de faire

var express = require('express');
var router = express.Router();


var total = 0;

/* GET home page. */
router.get('/', function(req, res, next) {
  increment(3);
  increment(2);
  console.log(total);
  res.end();
});



var increment = function(n){
    //Wait for n seconds before incrementing total n times
    setTimeout(function(){
    for(i = 0; i < n; i++){
        total++;
    }   
    }, n *1000);
};
module.exports = router;

Je ne suis pas sûr de ce que j'aurais à faire pour attendre jusqu'à ce que les deux fonctions de finition avant que je imprimer le total. Je dois créer un Événement personnalisé Émetteur pour y parvenir?

Vous passez des rappels. Un événement émetteur marcherait aussi bien. Ou promesses. De réflexion sur la question de l'obligation de "patienter" jusqu'à ce que quelque chose est fait est mal. Vous devrait plutôt penser à cela comme "comment puis-je savoir quand X est fait pour Y exécuter". Et des rappels, des événements ou des promesses sont autant de solutions pour ce problème.

OriginalL'auteur dfann | 2015-03-04