我想從Parse.com中獲取數據並在加載完所有數據後觸發事件。 方法getEinstellerData
,getObjektData
和getVermieterData
包含對parse.com數據庫的異步查詢。查詢中的對象被正確地取回。Promise在Javascript中不起作用,返回undefined
我寫的代碼accordring到:http://www.html5rocks.com/en/tutorials/async/deferred/
我現在的問題是,這裏面我居然在第一承諾全局變量寫的var combinedPromise = $.when(getVermieterData(vermieterId), getEinstellerData(einstellerId));
參數,似乎是不確定的。
我已經得到了下面的函數來獲取數據:
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");
});
});
},
這些都是包含查詢3個功能:
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);
}
});
在這裏,我的控制檯輸出:
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]
任何想法,我可能在這裏得到錯誤!?
在此先感謝;)
'promise'是未定義的,因爲您從未將其設置爲等於任何值。 'getObjektData'不返回任何東西。 –
我該怎麼做? – Igle
取決於你想要做什麼...... –