【发布时间】:2015-06-03 13:08:54
【问题描述】:
我正在使用 Parse.com 编写一些 JavaScript 代码。
说实话,我一直在阅读如何使用 Promise 并进行了大量研究,但仍然无法弄清楚如何正确使用它..
这是一个场景:
- 我有两个名为 Client 和 InvoiceHeader 的表(对象)
- 客户端可以有多个InvoiceHeader。
- InvoiceHeader 有一个名为“金额”的列,我想要每个客户的 InvoiceHeader 的总金额。
例如,如果客户 A 有两个 InvoiceHeader,金额分别为 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...
});
} );
【问题讨论】:
标签: javascript jquery parse-platform promise