title: How to wait for all async calls to finish
body: <p>I'm using Mongoose with Node.js and have the following code that will call the callback after all the save() calls has finished. However, I feel that this is a very dirty way of doing it and would like to see the proper way to get this done.</p>
  
  <pre><code>function setup(callback) {
  
    // Clear the DB and load fixtures
    Account.remove({}, addFixtureData);
  
    function addFixtureData() {
      // Load the fixtures
      fs.readFile('./fixtures/account.json', 'utf8', function(err, data) {
        if (err) { throw err; }
        var jsonData = JSON.parse(data);
          var count = 0;
          jsonData.forEach(function(json) {
            count++;
            var account = new Account(json);
            account.save(function(err) {
              if (err) { throw err; }
              if (--count == 0 &amp;&amp; callback) callback();
            });
          });
      });
    }
  }
  </code></pre>