title: Promise doesn't work in Javascript, Returns undefined
body: <p>I want to fetch data from Parse.com and trigger a event after all Data has been loaded.
  The methods <code>getEinstellerData</code>,<code>getObjektData</code> and <code>getVermieterData</code> contain the asynchronous query to the parse.com database. The Object within the queries are retreived correctly.</p>
  
  <p>I wrote that code accordring to: <a href="http://www.html5rocks.com/en/tutorials/async/deferred/" rel="nofollow">http://www.html5rocks.com/en/tutorials/async/deferred/</a></p>
  
  <p>My problem now is, that the parameter of <code>var combinedPromise = $.when(getVermieterData(vermieterId), getEinstellerData(einstellerId));</code> which i actually wrote in the first promise to global variables, seem to be undefined.</p>
  
  <p>I've got the following function to fetch Data:</p>
  
  <pre><code>getData = function() {
  
          var promise = getObjektData();
  
          promise.done(
              function(){
  
                  var combinedPromise = $.when(getVermieterData(vermieterId), getEinstellerData(einstellerId));
                  combinedPromise.done(function(){
  
                      console.log(einstellerData);
                      console.log(vermieterData);
  
                      $(that).trigger("setWohnungsDetails");
                  });
              });
  
      },
  </code></pre>
  
  <p>these are the 3 Functions which contain the queries:</p>
  
  <pre><code>getEinstellerData = function(){
      einstellerData = [];
  
      var queryEinsteller = new Parse.Query(erstellerDataObject);
  
      queryEinsteller.equalTo("ID", parseInt(einstellerId));
  
      queryEinsteller.first({
        success: function(einsteller) {
  
          var vorname = einsteller.get("Vorname");
          var nachname = einsteller.get("Nachname");
          var strasse = einsteller.get("Strasse");
          var hausnummer = einsteller.get("Hausnummer");
          var plz = einsteller.get("PLZ");
          var ort = einsteller.get("Ort");
          var email = einsteller.get("Email");
          var telefon = einsteller.get("Telefon");
  
          einstellerData.push({ vorname: vorname, nachname: nachname, strasse: strasse, hausnummer: hausnummer, plz: plz, ort: ort, email: email, telefon: telefon });
  
          console.log(einstellerData);
        },
        error: function(error) {
          alert("Error: " + error.code + " " + error.message);
        }
      });
  },
  
  getVermieterData = function(){
      vermieterData = [];
  
      var queryVermieter = new Parse.Query(vermieterDataObject);
  
      queryVermieter.equalTo("ID", parseInt(vermieterId));
  
      queryVermieter.first({
        success: function(vermieter) {
  
          var vorname = vermieter.get("Vorname");
          var nachname = vermieter.get("Nachname");
          var strasse = vermieter.get("Strasse");
          var hausnummer = vermieter.get("Hausnummer");
          var plz = vermieter.get("PLZ");
          var ort = vermieter.get("Ort");
          var email = vermieter.get("Email");
          var telefon = vermieter.get("Telefon");
  
          vermieterData.push({ vorname: vorname, nachname: nachname, strasse: strasse, hausnummer: hausnummer, plz: plz, ort: ort, email: email, telefon: telefon });
  
          console.log(vermieterData);
        },
        error: function(error) {
          alert("Error: " + error.code + " " + error.message);
        }
      });
  },
  
  getObjektData = function() {
  
      objectId = localStorage.getItem("currentWohnung");
  
      objektData = [];
  
      var queryObjekt = new Parse.Query(objektDataObject);
  
      queryObjekt.get(objectId, {
        success: function(wohnung) {
  
          var vermieter_id = wohnung.get("Vermieter_id");
          var einsteller_id = wohnung.get("Einsteller_id");
          var strasse = wohnung.get("Strasse");
          var hausnummer = wohnung.get("Hausnummer");
          var plz = wohnung.get("PLZ");
          var ort = localStorage.getItem("selectedStadt");
          var bild = wohnung.get("Bild");
          var flaeche = wohnung.get("Flaeche");
          var freitext = wohnung.get("Freitext");
          var gesamtmiete = wohnung.get("Gesamtmiete");
          var kaution = wohnung.get("Kaution");
          var miete = wohnung.get("Miete");
          var nebenkosten = wohnung.get("Nebenkosten");
          var raucher = wohnung.get("Raucher");
          var zimmer = wohnung.get("Zimmer");
  
  
          objektData.push({ vermieter_id: vermieter_id, einsteller_id: einsteller_id, strasse: strasse, hausnummer: hausnummer, plz: plz, ort: ort, bild: bild, flaeche: flaeche, freitext: freitext, gesamtmiete: gesamtmiete, kaution: kaution, nebenkosten:nebenkosten, raucher: raucher, zimmer: zimmer });
  
          console.log(objektData);
  
          einstellerId = einsteller_id;
          vermieterId = vermieter_id;
        },
        error: function(object, error) {
          console.log("error" + error);
        }
      });
  </code></pre>
  
  <p>And here my console output:</p>
  
  <pre><code>DetailStart init DetailStart.js:3
  DetailController init DetailController.js:10
  init Detail.js Detail.js:17
  Uncaught TypeError: Cannot call method 'done' of undefined Detail.js:34
  DetailStart.Detail.getData Detail.js:34
  DetailStart.Detail.init Detail.js:21
  DetailStart.DetailController.init DetailController.js:13
  DetailStart.init DetailStart.js:4
  (anonymous function) detail.html:115
  [Object]
  0: Object
  length: 1
  __proto__: Array[0]
  </code></pre>
  
  <p>Any idea what I might have gotten wrong here!?</p>
  
  <p>Thanks in advance ;)</p>