Я пишу некоторые коды JavaScript, используя Parse.com.Как правильно использовать Parse/Promise?
Честно говоря, я читал, как использовать Promise и сделано много исследований, но все еще не может понять, как правильно его использовать ..
Вот сценарий:
- у меня есть две таблицы (объекты) называется Client и InvoiceHeader
- Клиент может иметь несколько InvoiceHeader с.
- InvoiceHeader имеет столбец под названием «Сумма», и я хочу, чтобы общая сумма каждого клиента InvoiceHeader s.
Например, если клиент А имеет два InvoiceHeader сек с количеством 30 и 20, и Клиент Б не имеет ничего, результат я хочу видеть в 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...
});
});