0
我使用Parse.com寫一些JavaScript代碼。如何正確使用Parse/Promise?
說實話,我一直在讀如何使用承諾,做了很多的研究,但仍無法弄清楚如何正確地使用它..
這裏有一個場景:
- 我有兩個表(對象)稱爲客戶和InvoiceHeader
- 客戶可以有多個InvoiceHeader秒。
- InvoiceHeader有一個名爲「金額」的列,我希望每個客戶的總金額爲InvoiceHeader s。
例如,如果客戶A有兩個InvoiceHeader s的量30和20和客戶端B已經什麼都沒有,結果我想在tempArray看到的是'50,0' 。
然而,用以下代碼,它看起來就像是隨機的。我的意思是有時候tempArray
得到'50,50'或者「50,0」。我懷疑這是由於Promise的錯誤使用。
請幫幫我。我一直在查看這些代碼,並堅持了幾天。
$(document).ready(function() {
var client = Parse.Object.extend("Client");
var query = new Parse.Query(client);
var tempArray = [];
query.find().then(function(objects) {
return objects;
}).then(function (objects) {
var promises = [];
var totalForHeader = 0;
objects.forEach(function(object) {
totalForHeader = 0;
var invoiceHeader = Parse.Object.extend('InvoiceHeader');
var queryForInvoiceHeader = new Parse.Query(invoiceHeader);
queryForInvoiceHeader.equalTo('headerClient', object);
var prom = queryForInvoiceHeader.find().then(function(headers) {
headers.forEach(function(header) {
totalForHeader += totalForHeader +
parseFloat(header.get('headerOutstandingAmount'));
});
tempArray.push(totalForHeader);
});
promises.push(prom);
});
return Parse.Promise.when.apply(Parse.Promise, promises);
}).then(function() {
// after all of above jobs are done, do something here...
});
});